0
我正在制作一个C#应用程序来重新存储目录中存储的许多.bak文件。它现在工作正常,但我有一个问题,我似乎无法解决,并希望你的帮助。 ExecuteNonQuery需要一段时间来恢复一个.bak文件,并且我想每次ExecuteNonQuery完成时都用消息更新文本框。在执行方法之后更新文本框Winforms
我试着拨打ExecuteNonQueryAsync,但我得到这个消息:
连接不负责MultipleActiveResultSets采取
我的问题是:我如何更新文本框每次的ExecuteNonQuery完成?
这里是我的代码,请指教:
foreach (FileInfo file in Files)
{
string DbNamequery = "RESTORE FILELISTONLY FROM DISK = N'" + FolderBrowser.SelectedPath + @"\" + file.Name + "'" ;
sqlform.ConSQL.PrepareQuery(DbNamequery);
try
{
string DbName = sqlform.ConSQL.GetDataBaseName();
string RestoreQuery = "RESTORE DATABASE [" + file.Name + "] FILE = N'" + DbName + "' FROM DISK = N'" + FolderBrowser.SelectedPath + @"\" + file.Name;
RestoreQuery += "' WITH FILE = 1,MOVE N'" + DbName + @"' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\" + file.Name + ".mdf'";
RestoreQuery += ",MOVE N'" + DbName + @"_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\" + file.Name + "_0.ldf',";
RestoreQuery += "NOUNLOAD, STATS = 10";
sqlform.ConSQL.PrepareQuery(RestoreQuery);
sqlform.ConSQL.ExecuteQuery();
ReportTextBox.Text += "Data Base : " + DbName + " Has been Restored With this Name :" + file.Name + " Successfully \r\n";
}
catch (Exception ex)
{
ReportTextBox.Text += "Couldn't Resotre File " + file.Name + " Because of The following : \r\n" + ex.Message;
}
}
定义为的executeQuery():
public async void ExecuteQuery()
{
int x = await cmd.ExecuteNonQueryAsync();
}
当我执行查询同步它工作正常,但ReportTextbox没有得到更新,直到该循环已结束。
而且这段代码被包装在一个点击按钮事件提前
感谢
哦,我看到我从来没有想过返回任务,所以每Asyncronos了Methode高度重视和返回的东西是任务类型? ,现在它正在更新我的文本框,但即使查询执行得很好结果> 0测试总是失败?我认为我的try catch足以检测RESTORE操作是否成功,你不这么认为吗?无论如何谢谢你的洞察力,真的帮助人 –