使用VB.Net我添加了一个CTRL-C处理程序:控制台CTRL-C处理失败
AddHandler Console.CancelKeyPress, AddressOf QuitHandler
后者执行以下步骤:
Private Sub QuitHandler(ByVal sender As Object, ByVal args As ConsoleCancelEventArgs)
Console.WriteLine("Quitting...")
args.Cancel = True
Quit = True
End Sub
然后我有一个主循环只运行到Quit = True。
这一切工作,直到我开始从串口读取:
Private Sub port_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles Port.DataReceived
此时CTRL-C处理程序获取忽略有关30secs此时控制台应用程序刚刚结束,而无需通过清理代码会。
为什么?
port_DataReceived本身就是一个处理程序,所以当数据出现时它在不同的线程上运行,所以它不应该阻塞主线程。 CTRL-C一直工作到读取第一组数据为止,即如果在任何数据命中串口之前按CTRL-C,一切正常。 – Nicky 2009-12-30 12:03:53
数据每10秒钟左右击中一次端口,因此在应用退出前接收并显示三到四个批次。 – Nicky 2009-12-30 12:05:54
好的,我该放弃的时候了。我的猜测并没有帮助你。抱歉! – 2009-12-30 14:11:41