请问下,例如:我有十个类,类里面都有名称相同的方法,方法内执行不同的查询内容,要求者十个方法同时执行,该怎么设计,大家给想想办法吧!
List<Object> ClassList;//请存入十个类的对象实例
foreach(object o in ClassList)
{
var mi=typeof(o).GetMethod("XXX");//你的方法名称
//这是不需并行的方式
mi.Invoke(o,args);///args是你方法需要的参数数组
//不需要返回值的并行方式
Task.Factory.StartNew(()=>mi.Invoke(o,args));
//需要返回值的并行方式
var taskResult= Task.Factory.StartNew<object>(()=>mi.Invoke(o,args));//taskResult添加到一个List中去,这个foreach结束后,在循环判断每个taskResult的states,然后获取Result值
}
方案2.
如果需要返回值,建议你每个类都继承同一接口,
List<IFace> ClassList;//请存入十个类的对象实例
foreach(IFace o in ClassList)
{
//这是不需并行的方式
o .XXX(args);///args是你方法需要的参数数组
//不需要返回值的并行方式
Task.Factory.StartNew(()=>o .XXX);
//需要返回值的并行方式
var taskResult= Task.Factory.StartNew<xxxobject>(()=>o .XXX);//taskResult添加到一个List中去,这个foreach结束后,在循环判断每个taskResult的states,然后获取Result值
}
谢谢,非常有用
需求不太明确,如果是用循环调用这十个类的方法,继承相同接口即可。
用十个线程去执行这十个类的方法。
同时执行就是多线程,但实际也不是同时执行.如果说是要调用方便的话.那顶一个一个事件对象,把要调用的方法都注册进去就行
也可以说是并行执行
@演绎精彩人生: 那就是多线程调用了.最简单的就是用Task加Lamda表达式
Task.Run(()=>{对象.方法();});
Task.Run(对象.方法);这个不知道行不行