zoukankan      html  css  js  c++  java
  • 线程间操作无效: 从不是创建控件“labMessage”的线程访问它。

    解决方法:
    1、在窗体加载时加上这一句

    private void FormDate_Load(object sender, EventArgs e)
    {
        Control.CheckForIllegalCrossThreadCalls = false;
    }

    2、利用委托

    //利用委托解决 "线程间操作无效: 从不是创建控件“LabMessage”的线程访问它。"
    private delegate void SetTextCallback(string text);
    //在给Label.text赋值的地方调用以下方法即可
    private void SetText(string text)
    {
        // InvokeRequired需要比较调用线程ID和创建线程ID
        // 如果它们不相同则返回true
        if (this.LabMessage.InvokeRequired)
        {
            SetTextCallback d = new SetTextCallback(SetText);
            this.Invoke(d, new object[] { text });
        }
        else
        {
            this.LabMessage.Text = text;
        }
    }
    //用于关闭等待窗体
    private void closeWattingForm()
    {
        if (LabMessage != null)
        {
             SetText("再见!");
        }
    }
  • 相关阅读:
    golang交叉编译:Linux
    vmware共享文件夹
    虚拟机-Debian服务器配置
    day38--MySQL基础二
    day19-IO多路复用
    mysql 对时间的处理
    mysql 优化
    Linux性能查看
    day18-socket 编程
    JAVA 消耗 CPU过高排查方法
  • 原文地址:https://www.cnblogs.com/haibing0107/p/6122982.html
Copyright © 2011-2022 走看看