1一 :安全委托,保证方法在线程中能安全调用
#region 安全委托,保证方法在线程中能安全调用
private delegate void TaskDelegate();
private delegate void InvokeMethodDelegate(Control control, TaskDelegate handler);
private void safeInvoke(Control control, TaskDelegate handler)
{
if (control.InvokeRequired)
{
while (!control.IsHandleCreated)
{
if (control.Disposing || control.IsDisposed)
return;
}
IAsyncResult result = this.BeginInvoke(new InvokeMethodDelegate(safeInvoke), new object[] { control, handler });
control.EndInvoke(result);//获取委托执行结果的返回值
return;
}
IAsyncResult result2 = control.BeginInvoke(handler);
control.EndInvoke(result2);
}
#endregion