我有几个超级片状的第三方DLL。它们有时会挂起,永远不会返回,或者有时会抛出可能导致整个过程失败的奇怪异常。
我想移动这些DLL并在单独的Child进程中加载。这样做而不必做坏事Thread.Abort我可以干净地关闭这个过程,然后在需要时重新生成它。
因此,我的父应用程序会收到某些第三方DLL需要处理的文件列表。我基本上需要将这些传递给新的子进程,让它处理文件,然后回传给它成功的父进程。如果击中风扇并重新产生,我也必须能够打开这个过程。这些文件作为常量流来生成一个进程,每次我得到一个文件是不可能的,id希望它挂起并只接受请求。
现在我正在从父级生成子进程,然后尝试使用内存映射文件来共享文件/工作。只是传递所述文件的位置并以某种方式在处理时获得响应会更容易吗?
这里有什么好策略......
答案 0 :(得分:0)
我会......
创建一个WCF服务,使用托管dll的PerCall实例并执行文件处理 - 这会为每个调用生成一个新实例,如果有任何关闭,它不应该影响另一个。您可以将其作为主应用程序的一部分托管,但也可以作为单独的Windows服务,并且可能将在同一台机器上,使用命名管道传输。
从主应用中点击每个请求。
如果你没有得到成功的回复(只要它不是wcf异常 - 即找不到端点)只需重试x次请求