UI上的控件不是线程安全的,所以跨线程的操作UI控件需要通过Invoke的方式: private object m_SyncObjectForListBox = new object(); private void UpdateListBox(ListBox control, string text) { if (control.InvokeRequired) { SetTextCallback d = new SetTextCallback(UpdateListBox); this.Invoke(d, new object[] { control, text }); } else { lock (m_SyncObjectForListBox) { control.Items.Add(text); } } } |
|
来自: goodwangLib > 《多线程》