逮到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) 浏览(3586)

在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) 浏览(1856)

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

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

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

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


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

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

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

要咋办呢? 


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

点击查看原图

点击查看原图


阅读全文>>

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

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

使用嵌入资源实现单个EXE文件发布.net应用程序

作者:V君 发布于:2014-12-14 0:16 Sunday 分类:折腾手记

不管你是非托管还是托管还是混合DLL, 全都塞进去啦!

又是一次蛋疼的折腾经历, 不过还真有意思

点击查看原图

阅读全文>>

标签: 软件开发 C# DLL嵌入资源 程序打包

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

Winform ListView ColumnHeader 表头点击排序支持, 带升降序三角, 原生功能

作者:V君 发布于:2014-11-13 10:54 Thursday 分类:挖坑经验

最近给公司做个日志分析小工具, 用 ListView 呈现内容, 需要点表头排序.

早就知道ListView不带集成实现, 尽管能自己排序再塞进去, 但表头三角形就不那么好搞了.

以前见过自己绘制 或者使用Unicode的 △▽ , 觉得好龌龊.

继续爬咕狗, 因为看起来像是Win32的集成功能但是Winform没有封装.

于是就在 CodeProject找到, 用爽之, 逐整理添加到 码农WikiPoC仓库 .

点击查看原图

标签: 软件开发 C# Winform ListView

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

Powered by emlog 去你妹的备案 sitemap