await和Task.Wait的区别

8

第一种方式:

var tds=SearchProcess();
await tds;

public async  Task<XmlElement> SearchProcess()
{
}

第二种方式:

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

public XmlElement SearchProcess()
{
}

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

1
https://dev59.com/vGkw5IYBdhLWcg3w_Pbn - Nagaraj S
1
https://dev59.com/jWcs5IYBdhLWcg3wGQHF?rq=1 - Anand Thangappan
1个回答

8

Task.WaitAll 是一种阻塞的方法,而使用 await 会使包含该方法的方法成为异步方法(async)。如果要异步等待多个任务完成,可以使用 Task.WhenAll

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接