简单使用委托的几种方法总结
说明:Invoke同步BeginInvoke异步
this.Invoke(new MethodInvoker(() =>
{
事件方法
}));
或者:
this.Invoke(new MethodInvoker(delegate
{
事件方法
}));
含参的委托:
定义:
public delegate int AddHandler(int a, int b);
private int Add(int a, int b)
{
//事件方法
return a + b;
}
调用:
AddHandler handler = new AddHandler(Add);
int result = handler.Invoke(1, 2);
含参的异步委托:
定义:
//异步日志记录委托
private delegate bool AddDelegate(string userName, int logType, string logDetail, string ip, string provinceName);
调用:
AddDelegate dn = new AddDelegate(logBll.AddUserLog);
//0 登陆
IAsyncResult isr = dn.BeginInvoke(userName, 0, "登录", IpHelper.GetLocalIP(), model.Province, null, dn);
dn.EndInvoke(isr);
微软封装好的委托定义-直接使用
调用:
//无参同步
Action s = new Action(openURL);
s.Invoke();
//无参异步
Action s = new Action(SeacherURL);
s.BeginInvoke(null, "");
//带参异步
Func<int,int,dynamic> fc=new Func<int,int,dynamic>(test);
dynamic returndata = fc.Invoke(1, 2);
fc.BeginInvoke(1, 2, null, null);