您的位置:首页 > 其它

多任务完成以后立即进行处理

2017-05-19 19:02 204 查看

几个task任务同步运行,希望每个单独任务完成以后立即进行处理,而不需要等待其他任务的完成。可通过引入更高级的async方法来await任务,并对结果进行处理。

class Program
{
static void Main(string[] args)
{
ProcessTaskAsync();

Console.ReadLine();
}

/// <summary>
/// 等待并输出
/// </summary>
/// <param name="second"></param>
/// <returns></returns>
static async Task<int> DelayAsync(int second)
{
await Task.Delay(TimeSpan.FromSeconds(second));
return second;
}

static async Task ProcessTaskAsync()
{
//创建任务队列
Task<int> task1 = DelayAsync(2);
Task<int> task2 = DelayAsync(3);
Task<int> task3 = DelayAsync(1);

var tasks = new[] { task1, task2, task3 };

var processTasks = tasks.Select(async t =>
{
var result = await t;
Console.WriteLine(result);
});

//等待全部任务完成
await Task.WhenAll(processTasks);
}
}

运行结果

github地址:https://github.com/xiaopotian1990/NETAsyncDemos.git里面的TaskOver项目

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: