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("再见!");
        }
    }
  • 相关阅读:
    bash特性
    FHS 层级文件系统
    环境变量的问题
    linux认识
    搜索引擎的使用
    nginx
    部署操作手册
    git
    添加tag
    pycharm中使用git
  • 原文地址:https://www.cnblogs.com/haibing0107/p/6122982.html
Copyright © 2011-2022 走看看