В Akka.Net есть красивый дизайн внутри актера, чтобы начать задачу с Task.Run
и передать результат обратно актеру:
Task.Run(() => Method(...)).PipeTo(self);
Обратите внимание, что IO не задействовано.
Внутри
Model Method(...)
есть небольшая предварительная обработка, затем я должен ждать вызова Task<Model>
и немного последующей обработки.
Task<Model>
находится в сторонней библиотеке, я не могу ее изменить.
В настоящее время я делаю
var model = proxy.GetModel(..).Result
внутри try catch
.
Возможный AggregateException
учитывается.
Другая идея состоит в том, чтобы использовать это с await
.
var model = await proxy.GetModel(..)
внутри try catch
и изменение подписи на
async Task<Model> Method(...)
Как мне изменить вызов метода в актере?
Task.Run(() => Method(...).Result).PipeTo(self);
Task.Run(async () => await Method(...)).PipeTo(self);
Какой подход лучше, в чем разница?