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

异步委托(实现多线程的方式)

时间:2017-10-27 21:35:53      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:sync   console   简单   bsp   invoke   oid   简单的   返回   委托   

1.创建线程的一个简单的方式就是定义一个委托,并异步调用它。委托是方法的类型安全的引用,

Delegate类还支持异步地调用方法,在后台Delegate类会自动创建一个执行任务的线程。委托使用

线程池来完成任务 。

public 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);
public void Test1()
{
    TakesAWhileDelegate d1 = AsyncDelegate.TakesAWhile;
    /*类Delegate提供了BeginInvoke方法,改方法总是有AsyncCallBack和object类型的
        * 两个额外的参数,返回类型为IAsyncResult,通过IAsyncResult获取委托的信息:
        * 验证是否完成了任务。
        */
    IAsyncResult ar = d1.BeginInvoke(1, 3000, null, null);
    //如果没有完成任务,就每个50ms输出一次.
    //while (!ar.IsCompleted)
    //{
    //    Console.Write(".");
    //    Thread.Sleep(500);
    //}
    //EndInvoke方法会等待BeginInvoke方法完成之后执行,这里会有进程阻塞
    int result = d1.EndInvoke(ar);
    Console.WriteLine("result : " + result);
    //Console.WriteLine("end..");
}

 

2.

 

异步委托(实现多线程的方式)

标签:sync   console   简单   bsp   invoke   oid   简单的   返回   委托   

原文地址:http://www.cnblogs.com/zhuxiang1633/p/7745121.html

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