用异常的方法来解决这个问题,首先还是捕获USB设备的拔出消息,由于.NET并不知道串口的拔出,要是该串口正在使用,这是对串口的访问将会产生异常,所以通过捕获异常来处理是最好有方便的。代码如下:
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0219)
{//设备被拔出
if (m.WParam.ToInt32() == 0x8004)//usb串口拔出
{
if (对串口进行操作)
{//产生异常
关闭串口
}
}
}
base.WndProc(ref m);
}