异步委托(实现多线程的方式)
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.
以上是关于异步委托(实现多线程的方式)的主要内容,如果未能解决你的问题,请参考以下文章
异步和多线程,委托异步调用,Thread,ThreadPool,Task,Parallel,CancellationTokenSource