【发布时间】:2015-04-10 10:30:55
【问题描述】:
此代码 sn-p 来自Stephen Cleary's blog,并提供了使用 Task.Run 时如何报告进度的示例。我想知道为什么更新 UI 没有跨线程问题,我的意思是为什么不需要调用?
private async void button2_Click(object sender, EventArgs e)
{
var progressHandler = new Progress<string>(value =>
{
label2.Text = value;
});
var progress = progressHandler as IProgress<string>;
await Task.Run(() =>
{
for (int i = 0; i != 100; ++i)
{
if (progress != null)
progress.Report("Stage " + i);
Thread.Sleep(100);
}
});
label2.Text = "Completed.";
}
【问题讨论】:
-
@newbieguy 字符串连接自动调用 ToString() 方法
标签: c# asynchronous progress