【发布时间】:2020-09-10 17:15:30
【问题描述】:
所以我得到了这样的 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 循环中吗?还是有更好的方法?
【问题讨论】:
-
您可以启动多个任务,而不是立即将它们放在一个列表中等待它们。然后做
await Task.WhenAll(tasks.ToArray()); -
旁注:您可能希望在等待时禁用该按钮,以避免在用户双击时启动新任务。
-
您不应将
Task.Factory.StartNew与async-await一起使用。
标签: c# .net multithreading asynchronous async-await