我使用的是akka.NET。在大多数情况下,我们是这样使用akka的:
class ActorA : UntypedActor
{
public delegate void EventHandler(object arg1, object arg2, ...);
public static event EventHandler Event;
}
actorA.Event += some_function;
在这种情况下,只要调用Event.Invoke(arg1, arg2)
,我们就执行some_function(arg1, arg2)
。现在假设我们有一个异步HTTP服务器,我试图让服务器异步等待actorA.Event
的发生,在客户端调用服务器之后。当Event
发生时,我不需要运行some_function
。但我必须确保运行时上下文切换回HTTP服务器的函数,即:
// in the methods of the HTTP server...
public async void AwaitAnEvent()
{
await ReturnOnEvent(actorA.Event);
}
是否可以有效地实现ReturnOnEvent
,在调用下一个actorA.Event.Invoke(arg1, arg2)
时立即返回?
1条答案
按热度按时间dgenwo3n1#
这种情况有点不对劲。在Web控制器内部,只需询问您的演员,这将触发它生成响应。
当询问时,它将在控制器中等待得到响应。