我最近遇到了这个由我们为我们工作的承包商编写的代码。它要么是非常聪明或愚蠢(我认为后者,但我想要第二个意见)。我并没有大规模地加快速度 async
await
。
基本上它的工作方式如下:
public bool Send(TemplatedMessageDto message)
{
return Task.Run(() => SendAsync(message))
.GetAwaiter()
.GetResult();
}
public async Task<bool> SendAsync(TemplatedMessageDto message)
{
//code doing stuff
var results = await _externalresource.DothingsExternally();
//code doing stuff
}
现在,我首先理解它 Task.Run()
没有意义,也没有效率?应该是:
public bool Send(TemplatedMessageDto message)
{
return SendAsync(message))
.GetAwaiter()
.GetResult();
}
public async Task<bool> SendAsync(TemplatedMessageDto message)
{
//code doing stuff
var results = await _externalresource.DothingsExternally();
//code doing stuff
}
我也不相信这真的是一种异步方法,因为它仍然会等待,对吧?我认为唯一的优势(甚至是重写)就是释放主要的工作者线程。
有人可以确认第一个任务不应该存在吗?