我正在编写一个 DLL,它由一个封闭源代码的专有程序加载,我无法控制。我还加载了一个同样晦涩难懂的专有 DLL。由于有时我必须通过我的 DLL 接口以非常低的延迟将命令中继到我加载的 DLL,因此我在初始化我的 DLL 时启动了一个单独的分离线程,并通过无锁队列向其发送未格式化的调试信息。因此,耗时的调试输出格式化和写入日志文件是异步完成的。问题是进程意外崩溃(我几乎可以肯定这不是我的错),而且我无法知道最后的调试信息是什么,因为我的分离线程在将其写入磁盘之前就被 Windows 杀死了。
所以这是我的问题:
- 如果专有程序崩溃以便我的分离线程在销毁之前运行更长时间,我可以以任何方式延迟销毁吗?
- 进程间通信会通过将我的分离线程移动到另一个 Windows 不会杀死的进程来解决我的问题吗?如果是这样,你会建议什么方法(我没有与 IPC 合作太多)
- 如果我使用 IPC,我如何知道何时终止我的“调试格式化过程”?