nob*_*ies 2 c# task-parallel-library
Task<string> RunList(int client)
{
return pages[client];
}
private async void Form1_DoubleClick(object sender, EventArgs e)
{
for (int x = 0; x < listBox1.Items.Count; x++)
{
RunList(x);
}
}
Run Code Online (Sandbox Code Playgroud)
这将贯穿任务循环,但是你怎么知道结果何时全部进入而不影响循环的速度?
您可以await在结果上WhenAll确保代码中的所有任务都已完成.(重要的是不要在WaitAll这里使用,这将阻止UI线程.)
private async void Form1_DoubleClick(object sender, EventArgs e)
{
var tasks = new List<Task<string>>();
for (int x = 0; x < listBox1.Items.Count; x++)
{
tasks.Add(RunList(x));
}
await Task.WhenAll(tasks);
}
Run Code Online (Sandbox Code Playgroud)
这里的基本思想是在调用任务之前简单地启动任务await.这是一个简单的例子,只有两个任务:
await Task.Delay(1000);
await Task.Delay(1000);
Run Code Online (Sandbox Code Playgroud)
这将执行第一个任务,然后执行第二个任务.
var task1 = Task.Delay(1000);
var task2 = Task.Delay(1000);
await task1;
await task2;
Run Code Online (Sandbox Code Playgroud)
这将启动两个任务,然后在两个任务完成后继续,然后允许同时运行.
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |