日期:2014-05-19  浏览次数:20725 次

一个线程问题,请高手指教
为了实现主程序和串口通信的独立运行,在主程序里调用串口通信dll时,在串口通信dll中创建了一个线程,当取到需要的数据并处理结束后,已事件的方式通知主程序,并把结果已事件参数的方式传给主程序。主程序中在响应事件的函数中对得到的数据进行处理。
问题是,通过调试发现,主程序的事件响应函数运行在新开的线程,而不是主线程。如何在线程间传递数据,而不改变运行的线程,即线程间彼此独立?

通过多线程的方式进行串口通信后,原来主界面上的定时器不再触发,这是什么原因?即原来都正常的,现在串口通信开了新线程后,原来定义的定时器都不触发了。

谢谢!

------解决方案--------------------
有主程序里面, 把所有的串口通信事件触发的Function都用this.Invoke(delegate)来完成, 这样做就可以主动权还给主线程了