Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Task.Run中使用'Result'的有效性如何`_C#_Async Await_Akka.net - Fatal编程技术网

C# 在Task.Run中使用'Result'的有效性如何`

C# 在Task.Run中使用'Result'的有效性如何`,c#,async-await,akka.net,C#,Async Await,Akka.net,在Akka.Net中,参与者内部有一个很好的设计,即使用task.Run启动任务,并将结果反馈给参与者: Task.Run(() => Method(...)).PipeTo(self); 注意,不涉及IO。 内部 模型方法(…) 有一点预处理,然后我必须等待对任务的调用和一点后处理。 任务位于第三方库中,我无法更改。 目前我有 var model=proxy.GetModel(..).Result在一个try catch中 考虑了可能的聚合异常 另一个想法是将其与wait一起使用 va

在Akka.Net中,参与者内部有一个很好的设计,即使用
task.Run
启动任务,并将结果反馈给参与者:

Task.Run(() => Method(...)).PipeTo(self);
注意,不涉及IO。
内部
模型方法(…)

有一点预处理,然后我必须等待对
任务的调用和一点后处理。
任务
位于第三方库中,我无法更改。
目前我有
var model=proxy.GetModel(..).Result
在一个
try catch中
考虑了可能的
聚合异常

另一个想法是将其与
wait
一起使用
var model=await proxy.GetModel(..)
在一个
try catch中
并将签名更改为
异步任务方法(…)

我应该如何更改actor中对方法的调用

Task.Run(() => Method(...).Result).PipeTo(self);
Task.Run(async () => await Method(...)).PipeTo(self);

哪种方法更好,有什么区别?

Result
阻塞线程并将任何异常包装在
聚合异常中。出于这些原因,我通常更喜欢
wait

在这种情况下,您可以:


如果没有async Wait关键字,我将不得不使用
方法(..)中任务的
结果
,因为我的代码有点简化,而
方法(..)中的后处理
使用结果-尽管我可以重构它。@杰拉德:不。你可以使用
方法
使用
异步
/
等待
很好,使用
任务的任一形式。运行
// Same as:
// Task.Run(async () => await Method(...)).PipeTo(self);
Task.Run(() => Method(...)).PipeTo(self);