为了实现主程序和串口通信的独立运行,在主程序里调用串口通信dll时,在串口通信dll中创建了一个线程,当取到需要的数据并处理结束后,已事件的方式通知主程序,并把结果已事件参数的方式传给主程序。主程序中在响应事件的函数中对得到的数据进行处理。
问题是,通过调试发现,主程序的事件响应函数运行在新开的线程,而不是主线程。如何在线程间传递数据,而不改变运行的线程,即线程间彼此独立?通过多线程的方式进行串口通信后,原来主界面上的定时器不再触发,这是什么原因?即原来都正常的,现在串口通信开了新线程后,原来定义的定时器都不触发了。谢谢!

解决方案 »

  1.   

    对于第一个问题,我也不清楚。
    对于第二个问题,我是在串口DLL里开线程的,如何封装成类?
      

  2.   

    感觉上,你的dll中的线程没有受主进程的管理,而是受dll的进程管理,所以,这两个线程貌似现在只能单向通讯?其实,题目看不太明白
      

  3.   

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

  4.   

    LeoMaya(我是L.W, 这是我的故事)能否讲的稍微详细点,谢谢!