c# – 如何避免.NET CF 3.5和CE 6 R3中出现严重错误
当我在带有附加调试器的设备上启动此示例程序时,会发生严重错误.
这是我们实际应用程序中发生的简化版本. 我发现的是: >必须附加调试器 然后,当表单可见并且GC收集位图时,会发生严重错误. 我正在使用.NET Compact Framework 3.5运行WindowsCE 6 R3. static class Program { static void Main() { // Fill up memory - Depends on device var memory = new int[100000 * 150]; // Settings the priority higher will raise the error earlier. // With Priority set to Normal the EXE won't get freed correct. // Without this line i have to reboot the CE after every test run... Thread.CurrentThread.Priority = ThreadPriority.Highest; // 80 is just random choosen. The error occurs also with 30 Bitmaps... for (int o = 1; o < 80; o++) { // Create a Bitmap and don't free it manually. The // The garbage collector will take care of it :) var bitmap = new Bitmap(100,100); // When i dispose the Bitmap,everything works fine... //bitmap.Dispose(); } // Force a GC run System.Diagnostics.Debug.WriteLine(GC.GetTotalMemory(true)); // Then error occurs when the form is shown. System.Windows.Forms.Application.Run(new System.Windows.Forms.Form()); } } 我已经找到了类似的问题,但没有回答…… > How to debug a fatal error that happens after calling Application.Exit() in .NET CF 3.5 WinForms application for Windows CE 6? 到目前为止我尝试过的事情: >手动清理所有资源.我已经搜索了所有位图创建并处理或缓存它们.错误仍然存??在,不仅是Bitmaps不好…… 解决方法
我有一个理论,那就是系统交换.如果调试器试图检索自己大小超过
CE’s paging pool大小的变量的内容,我可以想象它会死锁.调试器停止系统读取数据,但系统无法提供内容,因为它无法交换数据.使用IOCTL_HAL_GET_POOL_PARAMETERS,您应该能够检测系统是否正在交换.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |