[英]Akka.net actors in STA
我需要將成千上萬種不同格式的Office文檔轉換為一種通用格式。 為了使事情更快,我將使用akka.net對其進行並行化。 WordSaveAsActor應該:
甚至可以在STA中運行akka.net actor嗎? 如果我以這種方式使用akka.net,是否有任何擔憂?
簡短的答案是“是的,您可以使用Akka.NET做到這一點”
正如漢斯在評論中指出的那樣:
Word不太在乎您的圖書館。 它的互操作接口是單線程的,您從工作線程進行的任何調用都會自動編組到擁有Application對象的線程中。
您可以使用Akka.NET中的調度程序對參與者的並發需求進行一些控制-您可以在Akka.NET Bootcamp課程2.1中了解不同類型的Akka.NET調度程序以及它們的工作方式 。
對於您而言,這是我建議您執行的操作:
WordSaveAsActor
並將其配置為使用Akka.NET中的CurrentSynchronizationContextDispatcher
,可以通過配置來完成: var wordActor = MyActorSystem.ActorOf(Props.Create(() => new WordSaveAsActor(...)).WithDispatcher("akka.actor.synchronized-dispatcher"))
這個參與者處理的所有消息將在STA線程上自動完成。 我們在其他STA環境(例如Windows Forms UI)中使用了此技術,它大大簡化了一切。
WordSaveAsActor
。 正如漢斯指出的那樣,除非您並行運行Word的多個實例,否則利用它的COM API一次實際上不能做多個操作。 因此,為了利用Akka.NET的並行性,您需要找到一種方法來使用多個參與者來並行化不需要Word的操作部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.