日期:2014-05-17  浏览次数:21462 次

检测U盘插入和拔出遇到的问题?
本帖最后由 download_a01 于 2013-12-24 11:31:22 编辑

检测U盘插入和拔出遇到的问题:

在重写的WndProc中调用

ManagementObjectCollection USBControllerDeviceCollection = new ManagementObjectSearcher("SELECT * FROM Win32_USBControllerDevice").Get();


当插上U盘后,报错:


详细错误:
针对此 RuntimeCallableWrapper 向 COM 上下文 0x60f080 的转换失败,错误如下: 因为应用程序正在发送一个输入同步呼叫,所以无法执行传出的呼叫。 (异常来自HRESULT:0x8001010D (RPC_E_CANTCALLOUT_ININPUTSYNCCALL))。原因通常是创建此 RuntimeCallableWrapper 的 COM 上下文 0x60f080 已断开连接,或者该上下文正忙于执行其他操作,无法处理该上下文转换。将不会有代理服务于该 COM 组件上的请求,调用将直接转向该 COM 组件。这可能会导致损坏或数据丢失。要避免此问题,请确保在应用程序全部完成 RuntimeCallableWrapper (表示其内部的 COM 组件)之前,所有 COM 上下文/单元/线程都保持活动状态并可用于上下文转换。

该如何解决?

------解决方案--------------------


试试多线程。