控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

C# 异步

作者:佚名 出处:互联网 2011年03月16日 阅读:

C# 异步
 
 class Invoke
    {
        #region 异步不带返回值
        //声明委托
        public delegate void AsyncEventHandler();

        //异步方法
        void Event1()
        {
            Console.WriteLine("Event1 Start!");
            System.Threading.Thread.Sleep(4000);
            Console.WriteLine("Event1 End!");
        }

        //同步方法
        void Event2()
        {
            Console.WriteLine("Event2 Start!");
            int i = 0;
            while (i < 20)
            {
                i = i + 1;
                Console.WriteLine("Event2...."+i.ToString());
            }
            Console.WriteLine("Event2 End!");
        }

        public void Show()
        {
            long start = 0;
            long end = 0;
            Console.WriteLine("Ready");
            start = DateTime.Now.Ticks;
            //实例化委托
            AsyncEventHandler asy = new AsyncEventHandler(Event1);
            //异步调用开始,没有回调函数和AsyState,都为null
            IAsyncResult ia=asy.BeginInvoke(null,null);
            //同步方法开始
            Event2();
            //异步结束,若没有结束,一直阻塞到调用完成,在此返回值函数的return,若有返回值,
            asy.EndInvoke(ia);

            end = DateTime.Now.Ticks;
            Console.WriteLine("时间刻度差:"+Convert.ToString(end-start));

            Console.ReadLine();


        }
        #endregion

        #region 异步带返回值

        private string MethodName(int num, out int retNum)
        {
            retNum = num;
            return "Hell";
        }

        private delegate string invokeDelegate(int num, out int retNum);

        public void Run()
        {
            invokeDelegate del = new invokeDelegate(MethodName);

            int i;

            IAsyncResult iar = del.BeginInvoke(525,out i,null,null);

            //去做别的事情

            string result = del.EndInvoke(out i,iar);
            Console.WriteLine(i.ToString() + "____" + result);
        }
        #endregion
    }
 

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统