【发布时间】:2016-10-12 01:53:28
【问题描述】:
我有一个 WPF 应用程序(C# 6.0、.NET 6.1、Visual Studio 2015、x64),当我开始以下任务时会冻结界面:
private async void ComputeButton_Click(object sender, RoutedEventArgs e) {
await Scanner();
DrawButtons();
}
private static async Task Scanner() {
try {
BigBox.DoScan();
await Task.CompletedTask;
} catch (Exception ex) {
SMErrorLog.WriteLog("Scanner error: ", ex);
}
}
我的应用程序包含几个选项卡。上面的代码位于其中一个选项卡中。如果我单击“计算”按钮,计算会继续进行(持续几分钟),但在计算进行时我无法选择任何其他选项卡来执行其他操作。我假设上面的代码是异步的,我不明白为什么应用程序在 DoScan 运行时冻结。
任何帮助或建议将不胜感激。
查尔斯
【问题讨论】:
-
BigBox.DoScan是做什么的?Task.CompletedTask是什么? -
BigBox.DoScan 是一个扫描 SQL Server 2016 数据库的库例程。它会查看大约 2000 个表以寻找不寻常的模式。
-
Task.CompletedTask 在 Microsoft 任务库中。
-
I assume the code above is asynchronous你猜错了。 -
另请参阅 stackoverflow.com/questions/21348125/…、stackoverflow.com/questions/21419229/…、stackoverflow.com/questions/15879375/… 和 stackoverflow.com/questions/26367548/…,仅举几个关于 Stack Overflow 的类似问题