我正在考虑用 VB 6 重写一个全新的 VB.NET 应用程序。
该应用程序在终端服务下运行并大量使用 COM。
由于某种原因,该应用程序存在随机奇怪之处 -
- 随机访问冲突错误(WinDbg 异常分析指向 dll,如 comdlg32.dll、mscorwks)
- 随机缓冲区溢出错误(相同)
- 一般随机错误 - 例如 Form.Load 中的这一行有时会抛出 - Me.Icon = Resources.MyIcon
我已经遵循了所有可能的关于资源、垃圾收集、处置模式等的建议......它似乎没有任何好处。
我认为存在硬件问题。它在终端服务下的 Win2k3 虚拟机上运行。基本服务器操作系统是 Win2k3,具有 64 GB RAM。服务器有许多虚拟机,每个虚拟机都运行自己的“东西”(Exchange 等)。
要么存在硬件问题,要么 .NET 环境并不像人们想象的那么容易编程。
如果硬件以某种方式得到验证(完全不同的故事)并且应用程序继续表现如此,这是否是一条可行的路线(重写更接近金属)?
我不是虚拟机的忠实粉丝,并且怀疑它们的完整性。 (特别是在大型服务器上。)
Edit- 感谢大家的回复。事实证明,问题出在我的应用程序中的单个 .NET .DLL,该 .NET .DLL 并非针对 x86 代码。 COM 对象都是 32 位,操作系统是 64 位,因此我的 .NET 应用程序需要面向 32 位。 (这解释了为什么我的示例 VB6 应用程序总是有效。并不是说我really无论如何都想走那条路。)
安装PDB文件并使用用于监控您的应用程序,识别是否发生泄漏。
也查看这个“分析 COM 对象注册表干扰的好工具吗?” https://stackoverflow.com/questions/522580/good-tools-for-analysing-com-object-registry-interference/522670#522670
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)