首页新闻找找看学习计划

多线程中 依据条件开启子线程

0
悬赏园豆:40 [已关闭问题] 关闭于 2017-05-14 09:34

在做项目中,多线程处理 数据, 但当 处理的数据达到 指定个数时 ,  需要更换IP ,代码如下:

System.Threading.ThreadPool.QueueUserWorkItem(w =>
{
Parallel.ForEach(dt.AsEnumerable(), drow =>
{
drow["F3"] = Convert.ToString(Convert.ToInt32(drow["F3"]) + 1);
nCount += 1;
nRow += 1;
//并行
this.Invoke(new Action(() =>
{
//更换IP
if (nCount == nEXIP)
{
DateTime t1 = DateTime.Now;
ShowInfo(this.txtInfo, "切换IP:" + "已处理" + nCount + "条记录" + t1.ToString("yyyy-MM-dd hh:mm:ss fff"));
nCount = 0; //归零
Thread.Sleep(300);
}
//DateTime t1 = DateTime.Now;
//ShowInfo(this.txtInfo, "服务开启:" + "已处理" + nCount + "条记录" + t1.ToString("yyyy-MM-dd hh:mm:ss fff"));
}));
});
//并行处理结束,使用Invoke调用显示 提示信息
this.Invoke(new MethodInvoker(() => ShowInfo(this.txtInfo, "处理完毕:" + "已处理" + nRow + "条记录" + "--" + t.ToString("yyyy-MM-dd hh:mm:ss fff"))));
}, null);

 

并发执行的this.Invoke不行, 求大神指点 要怎样改下?

胖多多的主页 胖多多 | 初学一级 | 园豆:12
提问于:2017-04-09 10:22
< >
分享
所有回答(2)
0

this.Invoke怎么不行了,调试信息贴上来看看

男人要爽 | 园豆:15 (初学一级) | 2017-04-10 08:52

this.Invoke 并行处理  有的时候可以  有的时候不可以    是不是加THREAD.SLEEP() 把时间设置长点?

支持(0) 反对(0) 胖多多 | 园豆:12 (初学一级) | 2017-04-10 09:00
0

考虑考虑咋么处理 nCount += 1;

Yu | 园豆:12944 (专家六级) | 2017-04-13 09:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册