gpt4 book ai didi

c# - Windows 窗体的 BackgroundWorker 替代品

转载 作者:太空狗 更新时间:2023-10-30 00:31:32 24 4
gpt4 key购买 nike

是否可以在 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");
}
}

上面基本上是说,“做这个,完成后,将结果添加到表单中。”

最佳答案

我建议您将 async/awaitTask.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 acts as a replacement for BackgroundWorker .

关于c# - Windows 窗体的 BackgroundWorker 替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25013207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com