C# UI 多线程 通知 变更

如果不同的UI对话框分布在不同的线程创建,比如一个在主线程,一个在子线程,则两个线程可以分别自行操作UI的控件。

如果UI对话框是一个线程,业务计算是另一个线程,并且需要操作UI对话框的某个控件,可以这样操作:

在主线程中设置一个参数量操作函数,对应的控件需要变化,可以通过InvokeRequired变量来判断。即既可以实现线程通信,又可以实现线程操作UI。

// 回调就是自身,很简洁
delegate void SetValueCallback(int value);
public void SetProgressBarValue(int value)
{
    if(value>100)
    {
        value = 00;
    }
    if(this.progressbar1.InvokeRequired)
    {
        SetValueCallback d = new SetValueCallback(SetProgressBarValue);
        this.Invoke(d, new object[]{value});
    }
    else
    {
        this.progressbar1.Value = value;
    }
}

猜你喜欢

转载自blog.csdn.net/lonelyrains/article/details/90712993