你没有说你正在使用的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