异步委托(APM)使用Func异步操作,处理耗时操作

使用委托进行异步操作,处理一些耗时操作,防止主线程阻塞

使用例子:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace Demo
 7 {
 8     class Program
 9     {
10 
11         static void Main(string[] args)
12         {
13             Func<string> fun = new Func<string>(Test);   
14             Console.WriteLine("异步执行开始(异步委托的方法):" + fun.Method);
15            IAsyncResult asyncResult= fun.BeginInvoke(CallBack,new string []{"sadha","sahsiuh"});  //开始异步操作
16 
17             for (int i = 0; i < 10;i++ )
18             {
19                 Console.WriteLine("异步方法执行时同时执行其它代码:"+i);
20             }
21 
22             fun.EndInvoke(asyncResult);  //结束异步
23             Console.ReadKey();
24         }
25 
26         /// <summary>
27         /// 异步执行的方法
28         /// </summary>
29         /// <returns></returns>
30         public static string Test()
31         {
32             return DateTime.Now.ToString();
33         }
34 
35         /// <summary>
36         /// 异步方法执行完成回掉的方法
37         /// </summary>
38         /// <param name="async"></param>
39         public static void CallBack(IAsyncResult async)
40         {
41             string [] array= async.AsyncState as string [];
42             Console.WriteLine("异步操作是否完成:"+ async.IsCompleted);
43         }
44     }
45 }

上述代码运行结果:

posted @ 2016-07-11 22:49  赛跑的蜗牛  阅读(363)  评论(1编辑  收藏  举报