await和Task.Wait之间的区别

时间:2013-12-27 12:15:25

标签: c#

第一种方式:

var tds=SearchProcess();
await tds;

public async  Task<XmlElement> SearchProcess()
{
}

第二种方式:

var tds= Task.Factory.StartNew(()=>SearchProcess());
Task.WaitAll(tds);

public XmlElement SearchProcess()
{
}

在上述两种方法中,是否有任何性能差异?

1 个答案:

答案 0 :(得分:7)

Task.WaitAll正在屏蔽,而使用await会产生包含方法async。要异步等待多个任务,您可以使用Task.WhenAll

public async Task DoSomething()
{
    IEnumerable<Task> tds = SearchProcess();
    await Task.WhenAll(tds);
    //continue processing    
}