【发布时间】:2019-05-11 13:23:13
【问题描述】:
在 Akka.Net 中,actor 内部有一个不错的设计,可以使用 Task.Run 启动任务并将结果通过管道传回给 actor:
Task.Run(() => Method(...)).PipeTo(self);
注意,不涉及 IO。
里面Model Method(...)
有一点预处理,然后我必须等待对Task<Model> 的调用和一点后处理。Task<Model> 在第三方库中,我无法更改它.
目前我做
var model = proxy.GetModel(..).Result 在 try catch 内。
考虑了可能的AggregateException。
另一个想法是在 try catch 内使用 await。var model = await proxy.GetModel(..)
并将签名更改为async Task<Model> Method(...)
我应该如何更改actor中对Method的调用?
Task.Run(() => Method(...).Result).PipeTo(self);
Task.Run(async () => await Method(...)).PipeTo(self);
哪种方法更好,有什么区别?
【问题讨论】:
标签: c# async-await akka.net