逮到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 嵌入式 串口

评论(0) 引用(0) 浏览(3612)

在Windows8.1 用 C# 读取加速度传感器且不带应用商店

作者:V君 发布于:2015-1-17 15:08 Saturday 分类:折腾手记

蛋疼的事儿需要用到加速度传感器 咱们的开发机器全都是Win7 目标机器是Win8.1

查到API和示例. 蛋疼的发现只支持Win8商店应用 -- 需要许可证,还需要部署才能运行调试.

嗯, 试着写个应用商店类库, 然后普通控制台引用不了 _(:з」∠)_

初看项目结构, 马丹, 没有具体引用程序集, 类似 PCL 一样给你引用一个名称极其含糊的 Runtime .

好吧, F12, 看元数据的文件头, 应该能找到 DLL 在哪, 尼玛

C:\Program Files\Windows Kits\8.1\References\CommonConfiguration\Neutral\Windows.winmd

好吧 我猜的没错 这货就是个DLL, 改名直接上 -> Windows8Sdk.dll

顺便找一下XML文档  -> Windows8Sdk.xml

C:\Program Files\Windows Kits\8.1\References\CommonConfiguration\Neutral\zh-hans\Windows.xml

好了, 可以愉快的写代码读传感器数据, 不过在Win7会爆不支持.


追加:

用这种方式引用会造成调试时无法编辑并继续,提示缺少System.Runtime的引用,然而引用后却无法编译通过

调试完之后用 #if !DEBUG 来包住你调用它的代码,包括using语句,暂时先移除它的引用

等调试完别的代码, 做Release编译时再加回来吧

好蛋疼但是又没办法, 看来还是得另找法子来读传感器, 直接拿dll的方式似乎还是略hack


标签: 软件开发 C# WIndows8.1 传感器

评论(0) 引用(0) 浏览(1879)

在C#控制台应用程序实现多个控制台窗口

作者:V君 发布于:2015-1-11 2:52 Sunday 分类:挖坑经验

多线程玩过了, 多进程也玩过了.

本着 黑客懒得给自己开发的工具加上图形界面 的原则, 让我们来玩多控制台吧 (=゚ω゚)= 


(´∀((☆ミつ 事实上是为一个蛋疼的事儿做蛋疼的处理 -- 控制台异步输入输出

我们都知道一个进程只有一个stdio

要打开多个控制台, 还不光只有输出, 还要输入甚至能够改变颜色/标题/清屏/光标位置 (泥垢

要咋办呢? 


买个关子, 进来看吧 (=゚ω゚)=          (´∀((☆ミつ

点击查看原图

点击查看原图


阅读全文>>

标签: 软件开发 C# 控制台 远程透明调用

评论(4) 引用(0) 浏览(3900)

Powered by emlog 去你妹的备案 sitemap