public delegate void ControlTextMethod(Control control, string text); private void SetControlText(Control control, string text) { if ( this.InvokeRequired) { ControlTextMethod controlTextMethod = new ControlTextMethod(SetControlText); this.Invoke(controlTextMethod, new object[] { control, text }); } else { control.Text = text; } }
需要更新控件的Text的地方,直接调用SetControlText方法就可以了。
方法2,使用“UIThread”:
public void UIThread(MethodInvoker method) { if ( this.InvokeRequired) { this.Invoke(method); } else { method.Invoke(); } } public void UpdateUI() { this.UIThread( delegate { this.Label1.Text = " msg1 "; this.Label2.Text = " msg2 "; }); }
在需要更新界面的地方这么调用:this.UIThread(delegate{this.Label1.Text="msg1";...});。
方法3,在一个方法里集中更新多个控件:
public void UpdateUI() { if ( this.InvokeRequired) { this.Invoke( new MethodInvoker( delegate { UpdateUI(); })); } else { this.Label.Text = " msg1 "; this.Labe2.Text = " msg2 "; } }