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

Posted fight139

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异步委托(实现多线程的方式)相关的知识,希望对你有一定的参考价值。

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.

 

以上是关于异步委托(实现多线程的方式)的主要内容,如果未能解决你的问题,请参考以下文章

委托事件总结之旅

8异步和多线程

C#异步编程一

C# 多线程初级汇总

Thread--线程

异步和多线程,委托异步调用,Thread,ThreadPool,Task,Parallel,CancellationTokenSource