你沒有說你正在使用的GUI框架,所以我要去承擔形式。儘管WPF會相似。
讓我們假設您單擊名爲「button1」的按鈕後開始工作。創建一個Form
子類,它是您的消息(爲了舉例,稱爲「MessageWaitForm」)。然後你可以使用它像這樣:
private void SomeWork()
{
for (var i = 0; i <3504 ; i++)
for (var j = 0; j < 2306; j++)
{
........
}
}
private void button1_Click(object sender, EventArgs e)
{
using (MessageWaitForm form = new MessageWaitForm())
{
form.Shown += async (sender1, e1) =>
{
await Task.Run(() => SomeWork());
form.Close();
}
form.ShowDialog();
}
}
這將導致在一個單獨的異步任務要執行的處理,一旦開始消息對話框中已被證明。任務完成後,執行將返回到form.Close()
語句,從而允許消息窗體自動關閉。
請注意,我必須做一些假設並填寫代碼示例,以便可以提供可用的答案。以上內容可能與您現在的具體實施不符,但希望您能理解所闡述的基本概念並使其符合您的需求。
使用[BackgroundWorker的](http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker%28v=vs.110%29.aspx)。 – LarsTech 2014-11-21 00:16:40
希望循環是線程? – BradleyDotNET 2014-11-21 00:19:45
帶'IProgress'的'async Task'可能是'BackgroundWorker'的另一種選擇。 – Unflux 2014-11-21 00:28:00