【问题标题】:Need to communicate with child process to process a file需要与子进程通信来处理文件
【发布时间】:2014-08-22 22:27:37
【问题描述】:

我有几个超级易碎的第 3 方 DLL。它们有时会挂起并且永远不会返回,或者有时会抛出奇怪的异常,从而影响整个过程。

我想移动这些 DLL,然后在单独的子进程中加载​​。这样一来,我就不必执行讨厌的 Thread.Abort 了,我可以干净利落地关闭该进程,然后在需要时重新生成它。

所以我的父应用程序接收到需要由某些第三方 DLL 处理的文件列表。我基本上需要将这些传递给新的子进程,让它处理文件,然后与父进程通信它是成功的。如果 sh*t 击中风扇并重新生成,我还必须能够降低该过程。这些文件以恒定流的形式出现,因此每次我获取文件时都生成一个进程是不可能的,我希望它一直存在并且只接受请求。

现在我正在从父进程生成子进程,然后尝试使用内存映射文件来共享文件/工作。仅传递所述文件的位置并在处理时以某种方式获得响应会更容易吗?

这里有什么好的策略...

【问题讨论】:

    标签: c# process ipc named-pipes memory-mapped-files


    【解决方案1】:

    我会……

    创建一个 WCF 服务,使用托管 dll 并执行文件处理的 PerCall 实例 - 这将为每个调用生成一个新实例,如果任何调用发生故障,它不应该影响另一个。您甚至可以将它作为主应用程序的一部分托管,但也可以作为单独的 Windows 服务托管,并且由于它可能位于同一台机器上,因此请使用命名管道传输。

    从您的主应用程序中触发每个请求。

    如果您没有得到成功的响应(只要它不是 wcf 异常 - 即未找到端点),只需重试请求 x 次

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 2014-02-14
      相关资源
      最近更新 更多