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