异步多线程
1、 回调:将后续动作通过回调参数传递进去,子线程完成计算后,去调用这个回调委托
IAsyncResult asyncResult = null;//是对异步调用操作的描述
AsyncCallback callback = ar =>
{
Console.WriteLine(“这里是回调函数”);
};
asyncResult = action.BeginInvoke(“第二个参数传入回调函数”, callback, null);
2、通过asyncResult.IsCompleted属性等待,卡界面
while (!asyncResult.IsCompleted)//未完成进入循环内部
{
//做一些其他操作
}
3、WaitOne()等待,即时等待 限时等待,使用方法如下:
asyncResult.AsyncWaitHandle.WaitOne();//直接等待任务完成
asyncResult.AsyncWaitHandle.WaitOne(-1);//一直等待任务完成
asyncResult.AsyncWaitHandle.WaitOne(1000);//最多等待1000ms,超时就不等了
4、EndInvoke 即时等待,而且可以获取委托的返回值 一个异步操作只能EndInvoke 一次。
声明委托action,指定方法后调用如下:
action.EndInvoke(asyncResult);//等待线程完成后,回归主线程。