Как асинхронно вызвать синхронный метод?

Насколько я понимаю в текущей реализации библиотеки RabbitMQ.Client (https://www.nuget.org/packages/RabbitMQ.Client/) для c# нет асинхронного варианта для метода BasicPublish. Я хотел бы что бы вызов этого метода был асинхронный что бы не блокировать потоки.

Я написал вот обёртку но не уверен в том что сделал это правильно, подскажите кто знает:


Exception exception = null;
await Task.Run(() => { 
    try {
        _channel.BasicPublish("", basicProperties.ReplyTo, replyProps, content);
    } catch (Exception e) {
        exception = e;
    } 
});
if(exception != null) {
    throw exception;
}

Ответы (2 шт):

Автор решения: Vasya Milovidov

Немного полистав интернет пришёл к такой реализации:

return Task.Run(() => 
    _channel.BasicPublish("", basicProperties.ReplyTo, replyProps, content);
);
→ Ссылка
Автор решения: Мурад

Все то же самое, но без await. Можно так же сначала создать поток, потом его запустить:

    Task task = new Task(() => { 
        try {
            _channel.BasicPublish("", basicProperties.ReplyTo, replyProps, content);
        } catch (Exception e) {
            exception = e;
        } 
    });

   task.Start();  

              
→ Ссылка