悬赏园豆:10
[已解决问题]
解决于 2007-12-27 16:38
<STRONG>应用场景描述</STRONG>:PC 和 一个终端设备通过串口连接,PC 发出指令,终端收到指令后会在几个毫秒内给出相应响应,然后 PC 发出一些后续指令。<BR><BR><STRONG>软件任务</STRONG>:通过软件界面控制发出数据,等待终端响应,并将收到的数据实时的显示在窗口界面上。<BR><BR><STRONG>软件实现</STRONG>:利用.net类库的SerialPort组件实现串口通信,串口发出数据是在主线程内完成的,串口收到数据触发 ReceivedData 事件,但是该事件并不在主线程触发,所以不能将数据直接刷在窗口界面上,那么我利用了 Invoke ,将数据显示触发在主线程。<BR><BR><STRONG>问题提出</STRONG>:主线程在通过串口发出数据后,为了等待响应,我使用了Sleep(100),让主线程休眠100ms,但是如果50ms内就收到数据,ReceivedData 事件所在的线程就会调用 Invoke,让主线程显示数据,但是此时主线程在休眠,我的问题就是,那么 ReceivedData 事件所在的线程是否也会因此被阻塞 50ms 呢?<BR><BR>
杨连国
|
菜鸟二级
|
园豆:
295
提问于:2007-12-27 11:18