我正在一個WPF
應用程序中,我正在一個線程內進行保存進程。保存過程後,我開始加載過程之間,我需要延遲,所以我用Task.Delay
方法。Task.Delay內線程C#
在保存/加載過程中,應用程序中會顯示進度條,直到完成。現在,當我使用Task.Delay
方法2秒時,應用程序中沒有顯示進度條。
現在的問題是延遲(2秒)。當有延遲時,用戶開始使用該應用程序,並突然加載過程開始。
所以我需要使Task.Delay
方法在Thread
之內,這樣我才能顯示延遲的進度條。
我試着下面的代碼,但它引發我一個警告,
//視圖模型代碼:
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.
如果有另一種方法讓我知道。
2秒延遲的目的是什麼?恕我直言,如果你有一個問題,你認爲你已經通過相當於'Thread.Sleep'解決了,那麼你可能不明白這個問題。 – moswald
@moswald:我需要線程完成其過程後的延遲。所以我無法使用'Thread.Sleep'。可能是我不知道。你可以請分享我的一些修改後的代碼,以便我可以清楚。 – iamCR
這就是我的意思,爲什麼在線程完成它的過程之後你需要延遲? – moswald