码迷,mamicode.com
首页 > 编程语言 > 详细

线程学习一

时间:2016-04-05 12:06:44      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

 static int TakesAWhile(int data, int ms)
        {
            Console.WriteLine("TakesAWhile started");
            Thread.Sleep(ms);
            Console.WriteLine("TakesAWhile completed");
            return ++data;
        }
        public delegate int TakesAWhileDelegate(int data, int ms);
        static void Main(string[] args)
        {
            TakesAWhileDelegate d1 = TakesAWhile;

            // polling
            IAsyncResult ar = d1.BeginInvoke(1, 3000, null, null);
            while (!ar.IsCompleted)
            {
                // doing something else
                Console.Write(".");
                Thread.Sleep(500);
            }
            int result = d1.EndInvoke(ar);
            Console.WriteLine("result: {0}", result);

            Console.Read();
        }

结果:技术分享

二:

  static int TakesAWhile(int data, int ms)
        {
            Console.WriteLine("TakesAWhile started");
            Thread.Sleep(ms);
            Console.WriteLine("TakesAWhile completed");
            return ++data;
        }
        public delegate int TakesAWhileDelegate(int data, int ms);
        static void Main(string[] args)
        {
            TakesAWhileDelegate d1 = TakesAWhile;
            // wait handle
            IAsyncResult ar = d1.BeginInvoke(1, 3000, null, null);
            while (true)
            {
                Console.Write(".");
                if (ar.AsyncWaitHandle.WaitOne(500, false))
                {
                    Console.WriteLine("Can get the result now");
                    break;
                }
            }
            int result = d1.EndInvoke(ar);
            Console.WriteLine("result: {0}", result);

            Console.Read();
        }

结果:技术分享

三:

    static int TakesAWhile(int data, int ms)
        {
            Console.WriteLine("TakesAWhile started");
            Thread.Sleep(ms);
            Console.WriteLine("TakesAWhile completed");
            return ++data;
        }
        public delegate int TakesAWhileDelegate(int data, int ms);
        static void Main(string[] args)
        {
            TakesAWhileDelegate d1 = TakesAWhile;
            // async callback
            d1.BeginInvoke(1, 3000, TakesAWhileCompleted, d1);
            for (int i = 0; i < 100; i++)
            {
                Console.Write(".");
                Thread.Sleep(500);
            }

            Console.Read();
        }
        static void TakesAWhileCompleted(IAsyncResult ar)
        {
            if (ar == null) throw new ArgumentNullException("ar");

            TakesAWhileDelegate d1 = ar.AsyncState as TakesAWhileDelegate;
            Trace.Assert(d1 != null, "Invalid object type");

            int result = d1.EndInvoke(ar);
            Console.WriteLine("result: {0}", result);
        }

结果:技术分享

四:

    static int TakesAWhile(int data, int ms)
        {
            Console.WriteLine("TakesAWhile started");
            Thread.Sleep(ms);
            Console.WriteLine("TakesAWhile completed");
            return ++data;
        }
        public delegate int TakesAWhileDelegate(int data, int ms);
        static void Main(string[] args)
        {
            TakesAWhileDelegate d1 = TakesAWhile;

            d1.BeginInvoke(1, 3000,
            ar =>
            {
                int result = d1.EndInvoke(ar);
                Console.WriteLine("result: {0}", result);
            },
            null);
            for (int i = 0; i < 100; i++)
            {
                Console.Write(".");
                Thread.Sleep(500);
            }

            Console.Read();
        }

结果:同三

线程学习一

标签:

原文地址:http://www.cnblogs.com/ChineseMoonGod/p/5354170.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!