首页 新闻 会员 周边

C#并行方面的问题,请教各位大神

0
悬赏园豆:20 [待解决问题]

var getDtTask = new Task<DataTable>(() => {return QueryFeeControl.QueryAllFeeInfo(); });

 var bindTask = getDtTask.ContinueWith((t) =>
 {
   Parallel.Invoke
   (
     () => { BindGridView(t.Result); },
     () => { ViewState["FeeInfo"] = t.Result; }
   );
 });
 getDtTask.Start();

这段代码Parallel.Invoke中的Action只能执行一个

天藐水瓶的主页 天藐水瓶 | 初学一级 | 园豆:184
提问于:2014-01-10 09:07
< >
分享
所有回答(1)
0

Parallel.Invoke 函数里面可以传入一个ParallelOptions类型的参数实现对并发的控制,里面有一个属性ParallelOptions可以限制最大并发粒度。

Parallel.Invoke(new ParallelOptions() { MaxDegreeOfParallelism = 2 }, actions);

不过这个最大并发粒度还受到TaskScheduler的参数控制的,默认的TaskScheduler的最大并发数为CPU个数。如果你要实现更多的并发数,可以使用我以前写的一个TaskScheduler:http://www.cnblogs.com/TianFang/archive/2011/10/05/2199526.html

Parallel.Invoke(new ParallelOptions() { TaskScheduler = new SimpleTaskScheduler(10) }, actions);
天方 | 园豆:5407 (大侠五级) | 2014-01-10 09:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册