请告诉我,这两种方法有什么区别?他们是否会运行async
?在单词 await
之后的流中会做什么?
public async Task<ActionResult> RunAsync()
{
var client = new WebClient();
await client.DownloadDataAsync(someUri);
return _jsonDataResult;
}
和
public async Task<ActionResult> RunAsync()
{
var client = new WebClient();
await Task.Run(()=>
{
client.DownloadData(someUri);
});
return _jsonDataResult;
}
使用第二种方法是否有意义?
请告诉我,这两种方法有什么区别?
第一个人不同步下载一些数据。第二个同步下载一些数据(阻止线程池线程直到下载完成)。
他们是否会运行异步?
好吧,这取决于您对"异步"的定义。我要说的是,第一个是"真正的异步",第二个是"假异步"。
,在等待单词之后的流中会做什么?
是的,不确定这个问题甚至意味着什么。流已经在那时已经读取。
使用第二种方法是有意义的吗?
否,除非您遇到同步执行的问题。例如,DNS查找可能会很慢,即使是通过异步API(设计错误IMO),它们通常同步完成。