c#关于“线程间操作无效: 从不是创建控件的线程访问它”的另类解决办法!

网上搜索的办法大致有2种:
1、CheckForIllegalCrossThreadCalls设置为false。
2、委托。
感觉都不好。第一种容易出bug,第二种太麻烦。
本人也是C#菜鸟,初学不久,被这个问题困扰许久。想了一下,用单片机编程的思想可以很方便的解决这个问题。
就是用写队列来处理线程的问题!

比如在另外的线程给TextBox_Log写数据。
在TextBox_Log所在的线程,定义一个API接口以及队列。本例程队列深度为1。根据业务需求可以自己变大。

        private static string TextBox_Log_Buf = "NULL";
        public static void AddLog(string str)
        {
            TextBox_Log_Buf = str;
        }

然后在TextBox_Log所在的队列设置定时器读取队列写入

        private void timer1_Tick(object sender, EventArgs e)
        {
            if(TextBox_Log_Buf != "NULL")
            {
                TextBox_Log.Text += "收到数据: " + TextBox_Log_Buf + "\r\n";
                TextBox_Log_Buf = "NULL";
            }
        }

别的线程调用AddLog方法就能给TextBox_Log写数据了!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值