Недавно я купил этот код, написанный подрядчиком, с которым мы работали для нас. Это либо дьявольски умный, либо глупый (я думаю, последнее, но я хотел второго мнения). Я не увеличиваю скорость до 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
}
Я также не уверен, что это действительно асинхронный метод, потому что он все равно будет ждать, правильно? Я думаю, что только преимущество (даже переписанное) - освободить основной рабочий поток.
Может кто-нибудь подтвердить, что эта первая задача не должна быть там?