逮到M$的BUG -- 串口关闭引发Safe handle异常

作者:V君 发布于:2015-1-18 12:39 Sunday 分类:挖坑经验

System.ObjectDisposedException: Safe handle has been closed 
   at System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success) 
   at System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle, Boolean& success) 
   at Microsoft.Win32.Win32Native.SetEvent(SafeWaitHandle handle) 
   at System.Threading.EventWaitHandle.Set() 
   at System.IO.Ports.SerialStream.AsyncFSCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOverlapped) 

   at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) 

串口相关的应用程序上, 关闭前做清理步骤时从应用域 

AppDomain.CurrentDomain.UnhandledException 

捕捉到并被记录下来, 然后程序自己挂掉了, 结果没能关闭系统...

用了许多关键字查原因, 总算在 爆栈 找到一个靠谱一点的解: M$的未修复bug.

先不关闭串口吧, 反正咱们的程序会连系统也一并关掉.

这样暂时解决问题.


update: 放着打开的串口不管的话,偶尔情况会更糟糕, 比如进程杀不死之类的. 尽管注销可以搞定. 尚无好主意.

标签: 软件开发 C# bug WIndows8.1 嵌入式 串口

引用地址:

发表评论:

Powered by emlog 去你妹的备案 sitemap