假设我有一个函数返回Task<bool>
,基本上我可以用两种方式实现它,有什么区别,优点/缺点?
public async Task<bool> FooAsync()
{
return await Task.Run(() =>
{
Thread.Sleep(100);
return true;
});
}
public Task<bool> FooAsync()
{
return Task.Run(() =>
{
Thread.Sleep(100);
return true;
});
}
答案 0 :(得分:0)
区别在于异步(代码可以在调用之后进一步移动,响应将会到来)vs并行性(并行代码执行)
答案 1 :(得分:0)
嗯,实际上没有必要在你的第一个例子中返回Task<bool>
,因为你已经等待它并得到了结果。
两个示例之间的区别在于,在第一种情况下,您实际等待给定的Task
将解包结果,这意味着您已经使用了布尔值。
第二个例子实际上将返回一个Task<bool>
,表示正在进行的返回布尔值的工作,它基本上表示将来会返回一个布尔值。无论是谁使用您的方法,都有责任等待获得想要的结果。