.NET C#-- 利用BeginInvoke与EndInvoke完成异步委托方法并获取方法执行返回值示例
//定义委托 delegate string MyDelegate(string name); //定义委托调用函数 public string Hello(string name) { Thread.Sleep(10000); //虚拟异步工作 return "Hello " + name; } //以下调用并获取返回值 private void Form1_Load(object sender, EventArgs e) { //建立委托 MyDelegate myDelegate = new MyDelegate(Hello); //异步调用委托,获取委托执行函数返回的执行结果 IAsyncResult result=myDelegate.BeginInvoke("Leslie", null, null); //定义一个变量接收委托函数执行的返回结果 string data=""; //判断如果异步执行是否完 while (result.IsCompleted==false) { Thread.Sleep(20); } //如果异步函数执行完成则获取返回结果 data = myDelegate.EndInvoke(result); }
IAsyncResult的相关说明:
public interface IAsyncResult
{
object AsyncState {get;} //获取用户定义的对象,它限定或包含关于异步操作的信息。
WailHandle AsyncWaitHandle {get;} //获取用于等待异步操作完成的 WaitHandle。
bool CompletedSynchronously {get;} //获取异步操作是否同步完成的指示。
bool IsCompleted {get;} //获取异步操作是否已完成的指示。
}