我在 WPF
应用程序中工作,我在其中的一个线程内进行保存过程。在保存过程之后,我将启动加载过程,我需要延迟,所以我使用了 Task.Delay
方法。
在保存/加载过程中,应用程序中会显示一个进度条,直到完成。现在,当我使用 Task.Delay
方法 2 秒时,应用程序中没有显示进度条。
现在的问题是延迟(2 秒)。当出现延迟时,用户开始使用应用程序并突然开始加载过程。
所以我需要将 Task.Delay
方法放在 Thread
中,这样我也可以显示该延迟的进度条。
我尝试了以下代码,但它向我发出警告,
// View 模型代码:
BackgroundWorker bw;
async System.Threading.Tasks.Task PutTaskDelay() //warning here
{
bw = new BackgroundWorker();
IsBusy = true; // to show the progress bar
bw.RunWorkerAsync();
bw.DoWork += async (s, e) =>
{
await System.Threading.Tasks.Task.Delay(2000);
};
bw.RunWorkerCompleted += (s, e) =>
{
IsBusy = false; // Hide the progress bar
};
}
警告:
The async method lacks await operators and will run synchronously. Consider using the async operator to await non-blocking API calls, or await Task.Run(...) to do CPU-bound work on a backgrond thread.
如果有替代方法,请告诉我。
最佳答案
BackgroundWorker
已过时。将异步方法与 Task.Run
结合使用,问题就会消失。
关于c# - 线程 C# 中的 Task.Delay,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35867134/