extjs做的网站,上海企业网站制作费用,贵卅省住房和城乡建设厅网站,国内公关公司委托BegionInvoke是指通过委托方法执行多线程任务#xff0c;例如#xff1a; //定义委托成员变量 delegate void dg_DeleAirport(); //指定委托函数 dg_DeleAirport dga AirportBLL.DeleteHistoryTransAirport; //通过BeginInvoke以异步线程方式执行委托函数#xff0c;可…委托BegionInvoke是指通过委托方法执行多线程任务例如 //定义委托成员变量 delegate void dg_DeleAirport(); //指定委托函数 dg_DeleAirport dga AirportBLL.DeleteHistoryTransAirport; //通过BeginInvoke以异步线程方式执行委托函数可通过EndInvoke获取返回值 //如果委托函数需要传入参数这些传入参数写在下面的两个null之前 //这两个参数第一个可指明回调函数名称(函数本身可由参数但这里不写参数)就是异步线程结束后主线程执行的函数参数一般就是asrs以便主线程处理返回结果回调函数一般诸如xxxCompleted且必须带参数(IAsyncResult asrs)回调函数如 void DelAirportCompleted(IAsyncResult df){ if (df ! null) { string cc(df.AsyncState as dg_DeleAirport).EndInvoke(df).ToString(); } inprocess false;} //第二个参数表示第一个参数代表的值往往就是调用者本身如下句的dga。 IAsyncResult asrs dga.BeginInvoke(null, null); //此时主线程将直接执行后续代码不会等待委托函数执行完毕。但是可以通过EndInvoke或asrs.IsCompleted等阻塞函数进行强制等待委托函数完成 //EndInvoke()函数可称为阻塞函数阻止主进程继续往下进行直到异步线程完成。 //EndInvoke取回委托函数返回值返回类型跟委托的类型一样如果委托函数返回类型是void此函数的返回值也是void while(!asrs.IsCompleted())一样也可以起到强制主线程等待的作用而且还可以在while方法中让主线程做些等待相关的操作 dga.EndInvoke(asrs); while (!asrs.IsCompleted){} 此外还可通过asrs.AsyncWaitHandle.WaitOne(5000, false);设置等待时间无论是否完成在等待时间后继续往下进行。第一个参数表示等待毫秒数时间在指定时间内如果异步线程完成返回true否则false。 不建议使用阻塞函数因为主界面会假死跟不用多线程没有区别。转载于:https://www.cnblogs.com/mol1995/p/7614820.html