Actor计时器-注册计时器参数-为什么使用Func <object,Task>而不选择Func <Task>

毛里西奥·阿维莱斯

在actor中注册计时器的签名是:

IActorTimer RegisterTimer(Func<object, Task> asyncCallback, object state, TimeSpan dueTime, TimeSpan period);

问题:

为什么asynCallback希望接收状态作为类型object的函数参数。毕竟,我的回调已经是Actor的一部分,并且可以直接访问状态。因此,将对象作为参数的要求似乎是多余的。

目前的想法

一个可能的原因是,这允许我们将参与者的状态提供给参与者以外的回调(甚至可能)。这是唯一原因吗?在处理计时器激活方法的状态时,还是应该考虑其他事项?

安德索

据我所知(我自己没有使用ActorTimers太多),通常不是通过实际的actor状态(因为您已经拥有该状态),而是要调用的函数的参数。

这个Actor就是一个例子:https : //github.com/Azure-Samples/service-fabric-dotnet-iot/blob/master/src/actors/StorageActor/StorageActor.cs

在这里,它们在注册计时器时将“ false”作为“状态”传递给this.SaveToStorage,但是稍后(在OnDeactivateAsync中),他们将true称为this.SaveToStorage。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章