//写一段简洁的代码 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”进行转化!