线程间操作无效: 从不是创建控件“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("再见!");
    }
}

 

posted @ 2016-12-01 17:58  涂山吕吕  阅读(1205)  评论(0编辑  收藏  举报