是否可以在 Windows 窗体应用程序中执行类似的操作?
我正在尝试寻找其他更新 UI 的方法,而不是一直使用 BackgroundWorker。也许是这样的?:
public List<String> results = new List<String>();
private void button1_Click(object sender, EventArgs e)
{
When(SomeLongRunningMethod("get") == true)
{
// LongRunningMethod has completed.
// display results on Form.
foreach(string result in results)
{
this.Controls.Add(new Label() { Text = result; Location = new Point(5, (5 * DateTime.Now.Millisecond)); });
}
}
}
public void SomeLongRunningMethod(string value)
{
if(value == "get")
{
// Do work.
results.Add("blah");
}
}
上面的内容基本上是说:“做this完成后,将结果添加到表格中。”
我建议你使用async
/await
with Task.Run
。注意返回结果更干净:
private void button1_Click(object sender, EventArgs e)
{
var results = await Task.Run(() => SomeLongRunningMethod("get"));
foreach(string result in results)
{
this.Controls.Add(new Label() { Text = result; Location = new Point(5, (5 * DateTime.Now.Millisecond)); });
}
}
public List<string> SomeLongRunningMethod(string value)
{
var results = new List<string>();
if(value == "get")
{
// Do work.
results.Add("blah");
}
return results;
}
我的博客上有一系列博客文章,描述了如何Task.Run充当替代品BackgroundWorker http://blog.stephencleary.com/2013/05/taskrun-vs-backgroundworker-intro.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)