进程通信之飞鸽传书2007绿色版

本文探讨了在多线程环境中如何安全地将数据从一个线程显示到主线程的控件中。介绍了两种方法:一是禁用跨线程操作检查,但这可能导致程序不稳定;二是使用代理机制,通过代理D协调主线程和其他线程间的通信,确保控件操作的安全性。示例代码展示了如何实现代理机制。
摘要由CSDN通过智能技术生成

在上一篇文章中,写了一些串口通信时数据接收的内容,其中有一行代码有个飞鸽传书2007绿色版:在数据接收线程中,当接收到数据并且校验正确后,我怎么显示这些数据到窗体中呢?要显示数据,必须要访问主线程(A)的各种控件,而数据接收是另一个线程(B)。有两种方案可以解决这个问题,和上文一样,也是第二个较好。

飞鸽传书2007绿色版:http://www.freeeim.com/ipmsg/ipmsg%5F2007/

方法一:取消跨线程操作检查

当线程B在访问线程A创建的控件时,飞鸽传书2007绿色版线程A会对控件的线程锁进行检验,当多个线程同时对控件进行写操作时,必然产生冲突,因此此时的程序会非常不稳定,经常突然就退出,Debug显示原因是跨线程操作控件了。既然如此,那就让线程A不去检验其他线程了,在Form_Load函数里加一句:

System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;就万事大吉了。很显然,这种方法不推荐使用。


方法二:使用代理机制

原理:有一个代理D,他负责沟通主线程A和其他线程B,当是主线程操作控件时,正常执行;当是其他线程B操作控件时,通知代理D,之后代理D唤醒主线程A,告诉主线程A去

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值