我用c#的serailport控件的datareceived事件来接收串口的数据,里面通过for语句把接收到的数据转换成字符串。
然后我另外建了一个线程来对数据进行处理。
(我做的是windows forms应用程序)
现在碰到的问题是:
1,通过显示,可以发现串口收到的字符串信息都是正确的,但是线程从这个字符串读取的字符串有时少一些字符。
请问是什么原因?
2,请问如何保证,我的线程每次读到的字符串信息都是在datareceived事件结束之后,而不是当中?我目前在for语句外面用了lock(this),还是不能解决问题1。我的线程需要在for语句彻底执行完后,读取里面的信息,读取完后,在把这个字符串清清除。

解决方案 »

  1.   

    http://topic.csdn.net/u/20090918/17/49e64449-d974-4078-b3de-b7960c9e51e6.html
      

  2.   

    建立一个线程类,里面定义好一个委托事件,该事件需要传入一个字符串,(就是你完整的数据),等for循环完了,调用线程里的委托事件。
    OK。
      

  3.   

    谢谢,你的意思是用事件的触发的方式?我现在用的是线程里面的while(true)循环,然后每次判断这个字符串是不是为空。
    那用你说的这种方式,我还需要创建一个新的线程吗?就把委托事件放在现在的线程不就可以了?