Вызов асинхронного метода с использованием Task.Run кажется неправильным?

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

Я также не уверен, что это действительно асинхронный метод, потому что он все еще будет ждать, верно? Я думаю, что единственным преимуществом (даже переписанным) является освобождение основного рабочего потока.

Может ли кто-нибудь подтвердить, что этой первой задачи не должно быть?

Ответы на вопрос(2)

Ваш ответ на вопрос