gpt4 book ai didi

c# - TAP的多任务处理

转载 作者:行者123 更新时间:2023-12-03 13:16:35 27 4
gpt4 key购买 nike

所以我得到了一个像这样的TAP

private async void btn_Start_Click(object sender, EventArgs e)
{
var progress = new Progress<string>(s => textBox1.Text += s);
await Task.Factory.StartNew(() => WebHelper.GetPosts(progress,cities[cityidx].link,categories[categoryidx].link,GetCurrentDistrict()),
TaskCreationOptions.LongRunning);
label1.Text = "completed";
}
现在,如果我想一次执行多个任务,应该将代码放入for循环中吗?或者,还有更好的方法?

最佳答案

实际上,我的第一个建议是使用 Task.Run 而不是 Task.Factory.StartNew ,因为它是较新的版本,并且包含更多的recommended,尽管StartNew具有更多配置选项。
接下来,您只需调用 Task.WhenAll 来释放前台线程,即可完成所有任务:

var tasks = new List<Task>();
for (int i = 0; i < 10; i++)
{
int ind = i; // copy trick to not get always 10 as output
tasks.Add(Task.Run(() =>
{
Console.WriteLine(ind);
}));
}

await Task.WhenAll(tasks);

正如@PeterBons明智地注意到的那样,一旦单击按钮,请考虑禁用(或忽略通过诸如 IsProcessing之类的状态变量继续执行的逻辑),直到操作完成以逃避多次用户单击为止。

关于c# - TAP的多任务处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63576578/

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