是否可以在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");
}
}
Run Code Online (Sandbox Code Playgroud)
以上基本上说:" 这样做,当你完成后,将结果添加到表单中."
我建议你使用async/ awaitwith 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;
}
Run Code Online (Sandbox Code Playgroud)
我的博客上有一系列博客文章描述了如何Task.Run替代BackgroundWorker.
| 归档时间: |
|
| 查看次数: |
2265 次 |
| 最近记录: |