委托同步方法

1、Invoke(...)

delegate string GetName(string name);

//实例化委托
GetName getname = new GetName(GetN);

var invokeName = getname.Invoke("1");
Console.WriteLine(invokeName);

2、直接  委托实例名字()

 getname("1");

委托异步调用
//异步回调方法,在异步执行完之后执行这个 方法。参数为IAsyncResult  异步执行的返回值  里面包含了异步执行
AsyncCallback acb = (t) =>
{
    Console.WriteLine(t.AsyncState);
    Console.WriteLine(t.IsCompleted);
    Console.WriteLine(t.CompletedSynchronously);
};
//BeginInvoke前面的参数,是委托的参数,     倒数第二个参数是回调方法 AsyncCallback参数IAsyncResult(注意:IAsyncResult会变成BeginInvoke的返回值),  最后一个参数会赋值给AsyncCallback的参数IAsyncResult里面的状态值
var stat = getname.BeginInvoke("1", acb, "状态值");
Console.WriteLine(stat.IsCompleted+"    "+stat.AsyncState);
//EndInvoke得参数为BeginInvoke的返回值。   EndInvoke会阻塞主线程    一直等到异步结束之后才主线程才往下走
var endValut = getname.EndInvoke(stat);
Console.WriteLine(endValut);
Console.ReadKey();
View Code

相关文章: