在做项目中,多线程处理 数据, 但当 处理的数据达到 指定个数时 , 需要更换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不行, 求大神指点 要怎样改下?
this.Invoke怎么不行了,调试信息贴上来看看
this.Invoke 并行处理 有的时候可以 有的时候不可以 是不是加THREAD.SLEEP() 把时间设置长点?
考虑考虑咋么处理 nCount += 1;