我正在使用Visual Studio 10开发一个C#库来获取帧并从四个摄像头录制视频。包含库的窗体必须以32位编译(即使最终机器具有Windows 7 64位)。以32位编译库并运行它大约1小时将破坏应用程序,并出现以下错误:
Firma problema:
Nome evento problema: BEX
Nome applicazione: S102.exe
Versione applicazione: 1.0.2015.619
Timestamp applicazione: 55963958
Nome modulo con errori: clr.dll
Versione modulo con errori: 4.0.30319.34209
Timestamp modulo con errori: 5348961e
Offset eccezione: 0000e233
Codice eccezione: c0000409
Dati eccezione: 00000000
Versione SO: 6.1.7601.2.1.0.256.48
ID impostazioni locali: 1040
Informazioni aggiuntive 1: bae0
Ulteriori informazioni 2: bae094b824883e215fdbc3ee2b394585
Ulteriori informazioni 3: 4415
Ulteriori informazioni 4: 441563ebf8308b83ce61454e88cff59c
Leggere l'informativa sulla privacy online:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0410
Se l'informativa sulla privacy online non è disponibile, leggere quella offline:
C:\Windows\system32\it-IT\erofflps.txt
我已经做了很多测试来检查问题。到目前为止,我只是在以下条件下连续运行申请超过9小时:
库被编译为'任何CPU'。我已经多次查看我的代码,以查找是否有内存泄漏或一些错误代码,但我找不到任何内容。我已经两个多星期了解这个问题。你有什么建议吗?非常感谢你!
更新
我已从代码中排除了负责部分:
Bitmap bitmap = new Bitmap(grabResult.Width, grabResult.Height,PixelFormat.Format32bppRgb);
// Lock the bits of the bitmap.
BitmapData bmpData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadWrite, bitmap.PixelFormat);
// Place the pointer to the buffer of the bitmap.
converter.OutputPixelFormat = PixelType.BGRA8packed;
IntPtr ptrBmp = bmpData.Scan0;
converter.Convert(ptrBmp, bmpData.Stride * bitmap.Height, grabResult); //Exception handling TODO
bitmap.UnlockBits(bmpData);
// Assign a temporary variable to dispose the bitmap after assigning the new bitmap to the display control.
Bitmap bitmapOld = pictureBox.Image as Bitmap;
// Provide the display control with the new bitmap. This action automatically updates the display.
if(pictureBox!=null) pictureBox.Image = bitmap;
if (bitmapOld != null)
{
// Dispose the bitmap.
bitmapOld.Dispose();
}
是否有人在此代码中看到任何可疑内容?谢谢!