【发布时间】:2015-05-19 20:50:36
【问题描述】:
我正在为我的 WPF 应用程序使用 Prism 框架。我有一个生产者服务,它在任务中运行,并在找到文件时引发 CompositePresentationEvent。我有一个订阅该事件的 Akka 演员。 actor的处理程序看起来很简单,看起来像这样:
private void HandleFileReceive(FileEventArgs args)
{
Self.Tell(new FileReceived(args.File));
}
当事件到达上面的处理程序时,我收到带有以下消息的 System.NotSupportedException:“没有活动的 ActorContext,这很可能是由于在此 Actor 中使用了异步操作”。
我认为这是因为服务在与参与者的处理程序不同的线程中运行。有没有办法在 Akka.NET 中处理这种类型的事情?
我并不完全反对编写新的 Actor 来完成我的情况所需的服务工作。问题是,根据文件中的某些设置,服务会有所不同。目前,我正在使用 MEF 处理这个问题,并从 IoC 容器中获取给定接口的正确实现者。我想继续将生产者的具体实现从核心代码(演员所在的地方)中抽象出来。
关于通过这个(感知的)线程问题和/或动态生成实现给定接口的 ProducerActor 的任何建议?
谢谢
-g
【问题讨论】:
标签: c# .net multithreading akka