利用委托的BeginInvoke与EndInvoke操作线程

委托的BeginInvoke方法可以异步的执行该委托绑定的方法,endinvoke用来接收委托返回的参数,并且一直堵塞直到方法执行完成才会继续执行后续代码,示例如下

        public  void mine()
        {
            Func<string> func = InitConfigTable;
            func.BeginInvoke(asyncResult =>
            {

                Func<string> handler = (Func<string>)((AsyncResult)asyncResult).AsyncState;
                string msg = handler.EndInvoke(asyncResult);
                Console.WriteLine(msg);
            }, func);
            Console.WriteLine("ok");
        }

        private string InitConfigTable()
        {
            Thread.Sleep(2000);
            string msg = "haha";
            return msg;
        }

begininvoke传入一个asyncCallback的委托和一个object,当方法执行完毕,则会自动执行asyncCallback绑定的方法如果InitConfigTable需要传入参数的话,那么begininvoke前面的参数要与InitConfigTable保持一致,比如

public  void mine()
        {
            string s="wow";
            Func<string,string> func = InitConfigTable;
            func.BeginInvoke(s,asyncResult =>
            {

                Func<string> handler = (Func<string>)((AsyncResult)asyncResult).AsyncState;
                string msg = handler.EndInvoke(asyncResult);
                Console.WriteLine(msg);
            }, func);
            Console.WriteLine("ok");
        }

        private string InitConfigTable(string s)
        {
            Thread.Sleep(2000);
            string msg = s;
            return msg;
        }

begininvoke传入的另一个参数object可以为空也可以传入上面定义的func委托,如果为空,则begininvoke方法内部的AsyncState需要改为AsyncDelegate,否则会出错

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,292评论 19 139
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,287评论 30 472
  • pyton review 学习指南 https://www.zhihu.com/question/29138020...
    孙小二wuk阅读 1,103评论 0 2
  • 今天好困,中午躺床上死活都睡不着,躺了一小时吧,最后起来看书了,一上午时间就看了一章书,下午看了三章,这效率也是没...
    阳光洒洒阅读 303评论 1 1
  • 一直没有看这本书,是因为标题,天生对打猎持有一种偏见,认为这种行为太残忍。 终于读这本书是为了在旅途中有事可做,有...
    居山之禾阅读 508评论 0 0