html5教程-等待句柄判断异步委托完成

发布时间:2018-12-18 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了html5教程-等待句柄判断异步委托完成脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

通过AsyncWatiHandle属性,访问等待句柄。WaitOne()方法阻断当前线程,直到异步调用线程完成返回可以利用的句柄以后再执行当前线程。

程序:

[html] 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading; 
 
namespace AsyncDelegate 

    class Program 
    { 
        public delegate int TakeSomeTimeDelegate(int data,int ms); 
 
        static void Main(string[] args) 
        { 
            TakeSomeTimeDelegate dl=TakeSomeTime; 
            IAsyncResult ar=dl.BeginInvoke(1,200,null,null); 
 
            while (true) 
            { 
                Console.WriteLine("."); 
                Console.WriteLine("Run in thread:" + Thread.CurrentThread.ManagedThreadId); 
                if (ar.AsyncWaitHandle.WaitOne(100, false)) 
                { 
                    Console.WriteLine("Can get the result now"); 
                    break; 
                } 
            } 
 
            //while (!ar.IsCompleted) 
            //{ 
            //    Console.WriteLine("."); 
            //    Console.WriteLine("Run in thread:" + Thread.CurrentThread.ManagedThreadId); 
            //    Thread.Sleep(50); 
            //} 
 
            int result = dl.EndInvoke(ar); 
            Console.WriteLine("Result:{0}", result); 
        } 
 
        static int TakeSomeTime(int data, int ms) 
        { 
            Console.WriteLine("TakeSomeTime started!"); 
            Console.WriteLine("Run in thread:"+Thread.CurrentThread.ManagedThreadId); 
            Thread.Sleep(ms); 
            Console.WriteLine("TakeSomeTime Completed!"); 
            return ++data; 
        } 
    } 

[html] 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading; 
 
namespace AsyncDelegate 

    class Program 
    { 
        public delegate int TakeSomeTimeDelegate(int data,int ms); 
 
        static void Main(string[] args) 
        { 
            TakeSomeTimeDelegate dl=TakeSomeTime; 
            IAsyncResult ar=dl.BeginInvoke(1,200,null,null); 
 
            while (true) 
            { 
                Console.WriteLine("."); 
                Console.WriteLine("Run in thread:" + Thread.CurrentThread.ManagedThreadId); 
                if (ar.AsyncWaitHandle.WaitOne(100, false)) 
                { 
                    Console.WriteLine("Can get the result now"); 
                    break; 
                } 
            } 
 
            //while (!ar.IsCompleted) 
            //{ 
            //    Console.WriteLine("."); 
            //    Console.WriteLine("Run in thread:" + Thread.CurrentThread.ManagedThreadId); 
            //    Thread.Sleep(50); 
            //} 
 
            int result = dl.EndInvoke(ar); 
            Console.WriteLine("Result:{0}", result); 
        } 
 
        static int TakeSomeTime(int data, int ms) 
        { 
            Console.WriteLine("TakeSomeTime started!"); 
            Console.WriteLine("Run in thread:"+Thread.CurrentThread.ManagedThreadId); 
            Thread.Sleep(ms); 
            Console.WriteLine("TakeSomeTime Completed!"); 
            return ++data; 
        } 
    } 

运行结果:

 

html5教程-等待句柄判断异步委托完成

 

 

ar.AsyncWaitHandle.WaitOne()阻断了当前线程, 直到异步调用线程完成获得可以利用的句柄以后再次执行当前线程。

 作者:xuhongwei0411

通过AsyncWatiHandle属性,访问等待句柄。WaitOne()方法阻断当前线程,直到异步调用线程完成返回可以利用的句柄以后再执行当前线程。

程序:

[html] 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading; 
 
namespace AsyncDelegate 

    class Program 
    { 
        public delegate int TakeSomeTimeDelegate(int data,int ms); 
 
        static void Main(string[] args) 
        { 
            TakeSomeTimeDelegate dl=TakeSomeTime; 
            IAsyncResult ar=dl.BeginInvoke(1,200,null,null); 
 
            while (true) 
            { 
                Console.WriteLine("."); 
                Console.WriteLine("Run in thread:" + Thread.CurrentThread.ManagedThreadId); 
                if (ar.AsyncWaitHandle.WaitOne(100, false)) 
                { 
                    Console.WriteLine("Can get the result now"); 
                    break; 
                } 
            } 
 
            //while (!ar.IsCompleted) 
            //{ 
            //    Console.WriteLine("."); 
            //    Console.WriteLine("Run in thread:" + Thread.CurrentThread.ManagedThreadId); 
            //    Thread.Sleep(50); 
            //} 
 
            int result = dl.EndInvoke(ar); 
            Console.WriteLine("Result:{0}", result); 
        } 
 
        static int TakeSomeTime(int data, int ms) 
        { 
            Console.WriteLine("TakeSomeTime started!"); 
            Console.WriteLine("Run in thread:"+Thread.CurrentThread.ManagedThreadId); 
            Thread.Sleep(ms); 
            Console.WriteLine("TakeSomeTime Completed!"); 
            return ++data; 
        } 
    } 

[html] 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading; 
 
namespace AsyncDelegate 

    class Program 
    { 
        public delegate int TakeSomeTimeDelegate(int data,int ms); 
 
        static void Main(string[] args) 
        { 
            TakeSomeTimeDelegate dl=TakeSomeTime; 
            IAsyncResult ar=dl.BeginInvoke(1,200,null,null); 
 
            while (true) 
            { 
                Console.WriteLine("."); 
                Console.WriteLine("Run in thread:" + Thread.CurrentThread.ManagedThreadId); 
                if (ar.AsyncWaitHandle.WaitOne(100, false)) 
                { 
                    Console.WriteLine("Can get the result now"); 
                    break; 
                } 
            } 
 
            //while (!ar.IsCompleted) 
            //{ 
            //    Console.WriteLine("."); 
            //    Console.WriteLine("Run in thread:" + Thread.CurrentThread.ManagedThreadId); 
            //    Thread.Sleep(50); 
            //} 
 
            int result = dl.EndInvoke(ar); 
            Console.WriteLine("Result:{0}", result); 
        } 
 
        static int TakeSomeTime(int data, int ms) 
        { 
            Console.WriteLine("TakeSomeTime started!"); 
            Console.WriteLine("Run in thread:"+Thread.CurrentThread.ManagedThreadId); 
            Thread.Sleep(ms); 
            Console.WriteLine("TakeSomeTime Completed!"); 
            return ++data; 
        } 
    } 

运行结果:

 

html5教程-等待句柄判断异步委托完成

 

 

ar.AsyncWaitHandle.WaitOne()阻断了当前线程, 直到异步调用线程完成获得可以利用的句柄以后再次执行当前线程。

 作者:xuhongwei0411

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! html5教程,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的html5教程-等待句柄判断异步委托完成全部内容,希望文章能够帮你解决html5教程-等待句柄判断异步委托完成所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:HTML