当前位置:  开发笔记 > 编程语言 > 正文

如何重新加载经常崩溃的第三方DLL

如何解决《如何重新加载经常崩溃的第三方DLL》经验,为你挑选了1个好方法。

我正在使用用非托管C++编写的第三方DLL来控制我们拥有的一些硬件.

不幸的是,这个DLL偶尔会崩溃,我的任务是让它自动"重新加载".我不太确定如何获得最佳效果.

我的项目使用C++.Net 2.0(2005).我将第三方的东西包装在一个单独的DLL中.我一直在尝试FreeLibrary()和LoadLibrary().但是,当我使用FreeLibrary()时,仍会分配一些内部DLL依赖项,而LoadLibrary()会因内存损坏而导致崩溃.

建议的另一种方法是使用.NET远程接口重构整个项目.它会更容易杀死另一个进程并重新启动它,但这将是很多工作.

有什么建议?指针?提示?



1> Matthew Xavi..:

最有效的方法是根本不在应用程序的进程中加载​​该DLL.而是创建第二个进程,其唯一的工作是代表您的应用程序使用该DLL.您可以使用共享内存区域,本地套接字或其他IPC机制来控制代理进程.

这样,当有问题的DLL崩溃时,您可以简单地允许代理进程死掉,而不必担心(几乎不可能)尝试确保DLL没有损坏任何重要的任务.您的主进程只需要启动代理进程的新实例并继续.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有