旗下导航:搜·么
当前位置:网站首页 > .Net教程 > 正文

c#托付的异步挪用的图文代码示例【C#.Net教程】,c#,委托,异步调用

作者:搜教程发布时间:2019-11-27分类:.Net教程浏览:44评论:0


导读:托付的异步挪用偶然,假如要让托付去完成一个庞杂耗时的使命时,同步挪用不是一个好的挑选,由于如许用户面对的是无聊的时刻斲丧和冗长(相对来说)的守候。这时刻托付的异步挪用就表现出了...

托付的异步挪用

偶然,假如要让托付去完成一个庞杂耗时的使命时,同步挪用不是一个好的挑选,由于如许用户面对的是无聊的时刻斲丧和冗长(相对来说)的守候。这时刻托付的异步挪用就表现出了上风,关于托付的异步挪用C#也做了封装,经由过程beginInvokeendInvke来完成。下面给出一个例子。

1. 定义了一个托付,myDelegate

2. 定义了一个事宜用于外部定阅

3. Increment,测试字段

4. doIt要领,每次被挪用时increment都邑自增,当值为5时,异步挪用事宜

重点在于这段代码:


IAsyncResult result = this.callBack.BeginInvoke
                        (new AsyncCallback(
                            (ia) => {
                                MessageBox.Show("completed");
                                AsyncResult ar = (AsyncResult)ia;
                                MyDelegate md = ar.AsyncDelegate as MyDelegate;
                                int r = md.EndInvoke(ia);
                                MessageBox.Show(r.ToString() + ia.AsyncState);
                            }), "message");
                    MessageBox.Show("begin invoke");

BeginInvoke函数包括四个参数:

AsyncCallback对象:这个参数的意义是,通知它当回调完成时,下一步该做什么,因而须要通报给它一个要领。new AsyncCallback(此处吸收一个要领,这里我用了lambda表达式)

Object对象:要通报给回调完毕时所挪用要领的参数。

AsyncResult ar = (AsyncResult)ia;////取得传入的IasyncResult,转化为AsyncResult对象

MyDelegate md = ar.AsyncDelegate as MyDelegate;////取得callBack对象

int r = md.EndInvoke(ia);////完毕托付的挪用,取得返回值

MessageBox.Show(r.ToString() + ia.AsyncState);////考证是不是取到了返回值

OK,如今关于异步托付已定义好了,下一步就是挪用了:

代码申明:

New一个timer和一个asyntroniseDelegate对象。

定阅callBack事宜,要领末了,返回了一个1

timer完成increment累加的操纵,每一秒累加1

increment累加到5的时刻,callback事宜触发,此时让它去实行一个很庞杂的使命,轮回了10亿次。

运转以后,将会看到的提示框,紧接着是,约莫过了2-3秒提示框涌现,然后是(可见,异步挪用的末了,我们胜利的取得了要领的返回值)

以上就是c#托付的异步挪用的图文代码示例的内容,更多相关内容请关注ki4网(www.ki4.cn)!

标签:c#委托异步调用


欢迎 发表评论: