我需要将数千个不同格式的ms office文档转换成一种通用格式。为了加快速度,我将使用akka.net对其进行并行化。WordSaveAsActor应:
在STA中可以运行akka.net演员吗?如果我以这种方式使用akka.net,会有什么问题吗?
发布于 2015-03-09 20:11:08
简短的回答是“是的,你可以用Akka.NET做到这一点”
正如汉斯在其评论中指出的那样:
字不太在乎你的图书馆。它的互操作接口是单线程的,您从工作线程发出的任何调用都会自动封送到拥有Application对象的线程。
您可以使用Akka.NET中的调度程序对参与者的并发需求进行某种控制--您可以使用了解不同类型的Akka.NET调度器以及它们如何在我们的Akka.NET启动营中工作。。
就你而言,下面是我建议你做的事情:
WordSaveAsActor并将其配置为在Akka.NET中使用CurrentSynchronizationContextDispatcher,您可以通过配置这样做:var wordActor = MyActorSystem.ActorOf(Props.Create(() => new WordSaveAsActor(...)).WithDispatcher("akka.actor.synchronized-dispatcher"))
此参与者进程将在STA线程上自动完成所有消息。我们在其他STA环境(如Windows )中使用了这种技术,它极大地简化了一切。
WordSaveAsActor。正如Hans所指出的,除非您并行运行多个Word实例,否则一次不能使用它的COM执行多个操作。因此,为了利用Akka.NET的并行性,您需要找到一种方法来使用多个参与者来并行操作中不需要Word的部分。
https://stackoverflow.com/questions/28940122
复制相似问题