await和Task.Wait之间的区别

dsa*_*aya 6 c#

第一种方式:

var tds=SearchProcess();
await tds;

public async  Task<XmlElement> SearchProcess()
{
}
Run Code Online (Sandbox Code Playgroud)

第二种方式:

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

public XmlElement SearchProcess()
{
}
Run Code Online (Sandbox Code Playgroud)

在上述两种方法中,存在任何性能差异吗?

Lee*_*Lee 7

Task.WaitAll阻塞,而使用await将使包含方法async.要异步等待多个任务,您可以使用Task.WhenAll:

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