//写一段简洁的代码
         private void button1_Click(object sender, EventArgs e)
         {
             //定义委托,并指定异步的执行方法
             Func<string, string> func = new Func<string, string>(ExecuteFunction);
             //开始异步,并指定异步的回调函数
             func.BeginInvoke("实现了异步", new AsyncCallback(CallBackFunction), "my");
         }
 
         private string ExecuteFunction(string str)          //执行函数
         {
             Thread.Sleep(2000);
             // To Do
             return str;
         }
 
         private void CallBackFunction(IAsyncResult ar)      //回调函数
         {
             //转化变量类型
             //因为委托异步编程的类型为AsyncResult类,而这个类又是实现了IAsyncResult接口的,可以说是它的基类!
             AsyncResult async = ar as AsyncResult;
             Func<string, string> func = async.AsyncDelegate as Func<string, string>;
             //获取异步执行函数的返回值
             string str = func.EndInvoke(ar); MessageBox.Show(str);
         }
         //在最后进行类型转化的时候,尽量使用“as”进行转化!
posted on 2012-07-17 16:18  cotopboy  阅读(177)  评论(0编辑  收藏  举报