我正在考虑用VB 6重写一个全新的VB.NET应用程序。
该应用程序在终端服务下运行,并且大量使用COM。
由于某种原因,该应用程序存在随机的异常情况 -
- 随机访问冲突错误(WinDbg异常分析指向像comdlg32.dll、mscorwks这样的dll)
- 随机缓冲区溢出错误(同上)
- 一般的随机错误 - 例如Form.Load中的这行代码有时会抛出异常 - Me.Icon = Resources.MyIcon
我已经遵循了所有可能的资源、垃圾回收、处理模式等方面的建议...但似乎没有任何好处。
我认为这可能是硬件问题。它在一个Win2k3虚拟机下运行,而且还在终端服务下运行。基本服务器操作系统是Win2k3,内存为64GB。服务器上有许多虚拟机,每个都运行自己的“东西”(Exchange等)。
要么是硬件问题,要么是.NET环境并不像人们想象的那样容易编程。
如果硬件得到验证(完全是另一回事),而应用程序仍然表现出这样的情况,那么这是否是一个可行的路线(更接近底层的重写)?
我不是虚拟机的铁粉,也怀疑它们的完整性。(特别是在大型服务器上。)
编辑 - 感谢所有人的回复。问题最终被确定为我的应用程序中的一个.NET .DLL没有针对x86代码进行定位。COM对象都是32位的,操作系统是64位的,因此我的.NET应用程序需要定位到32位。(这就解释了为什么我的示例VB6应用程序总是有效。不是我真的想走这条路。)