/// <summary> /// 委托实例 /// </summary> /// <param name="obj">在多线程间传递数据</param> private void Show(object obj, mcSocketServerClient pmSocketClient) { if (mscCtrl.fmMain.InvokeRequired) { msDataTableWithSocket tDTWS = new msDataTableWithSocket(); tDTWS.socket = pmSocketClient; tDTWS.dataTable = (DataTable)obj; mscLog.Write(tDTWS.dataTable); showDGV.Invoke(new EventHandler(Fm_Delegate), new object[] { tDTWS, EventArgs.Empty }); } if (showDGV.InvokeRequired) { //由于windows窗体及其他控件不具备跨线程的能力,所以这里必须调用控件的异步委托方法 showDGV.Invoke(new EventHandler(DGV_Delegate), new object[] { obj, EventArgs.Empty }); } }
//控件调用的方法 private void Fm_Delegate(object sender, EventArgs e) { msDataTableWithSocket tDTWS = (msDataTableWithSocket)sender; mscCtrl.Sorter(tDTWS.dataTable, tDTWS.socket); }