首页 新闻 会员 周边

>>>>>>>C#框架设计<<<<<<<

0
悬赏园豆:5 [已解决问题] 解决于 2014-04-20 23:14

请问下,例如:我有十个类,类里面都有名称相同的方法,方法内执行不同的查询内容,要求者十个方法同时执行,该怎么设计,大家给想想办法吧!

c#
发霉的荷尔蒙丶的主页 发霉的荷尔蒙丶 | 初学一级 | 园豆:5
提问于:2014-03-05 10:28
< >
分享
最佳答案
0

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值

}

收获园豆:5
hailants | 小虾三级 |园豆:750 | 2014-03-25 17:20

谢谢,非常有用

发霉的荷尔蒙丶 | 园豆:5 (初学一级) | 2014-04-20 23:14
其他回答(3)
0

需求不太明确,如果是用循环调用这十个类的方法,继承相同接口即可。

张鲸落 | 园豆:144 (初学一级) | 2014-03-05 10:32
0

用十个线程去执行这十个类的方法。

Launcher | 园豆:45045 (高人七级) | 2014-03-05 10:58
0

同时执行就是多线程,但实际也不是同时执行.如果说是要调用方便的话.那顶一个一个事件对象,把要调用的方法都注册进去就行

吴瑞祥 | 园豆:29449 (高人七级) | 2014-03-05 11:01

也可以说是并行执行

支持(0) 反对(0) 发霉的荷尔蒙丶 | 园豆:5 (初学一级) | 2014-03-05 11:24

@演绎精彩人生: 那就是多线程调用了.最简单的就是用Task加Lamda表达式

Task.Run(()=>{对象.方法();});

Task.Run(对象.方法);这个不知道行不行

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2014-03-05 11:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册