想对grid里的某列进行修改。30000条记录。
在单线程的时候修改时间是12秒。
开启10个线程20秒。
线程的执行过程是这样的。加入到线程队列,然后waitall。每线程根据传入的变量进行取模运算。
大家帮我分析下,是不是。因为对界面的修改次数过多引起的呢?
在单线程的时候修改时间是12秒。
开启10个线程20秒。
线程的执行过程是这样的。加入到线程队列,然后waitall。每线程根据传入的变量进行取模运算。
大家帮我分析下,是不是。因为对界面的修改次数过多引起的呢?
其次数据库操作,一般来说,可能很少为每个线程创建一个connection。
综合而说,你在此用多线程反而不如单线程效果明显。
也就是说对datatable进行的操作。
{
DateTime t = DateTime.Now;
ManualResetEvent[] manualEvents = new ManualResetEvent[10];
state info = null;
for(int i=0;i<10;i++)
{
manualEvents[i]=new ManualResetEvent(false);
info=new state(i,manualEvents[i]);
ThreadPool.QueueUserWorkItem(new WaitCallback(OnChange), info);
}
Mutex.WaitAll(manualEvents);
TimeSpan s = DateTime.Now - t;
MessageBox.Show(s.ToString());
}
private void OnChange(object o)
{
state info=(state)o;
foreach (DataRow r in ((DataTable)this.gridControl1.DataSource).Rows)
{
if (int.Parse(r["cid"].ToString()) % 10 == info.i)
r["f05001005"] = 1000.00;
}
info.manualEvent.Set();
}
{
public int i;
public ManualResetEvent manualEvent; public state(int j,ManualResetEvent m)
{
i = j;
manualEvent = m; }
}
也就是说对datatable进行的操作。如果这样,属于纯粹cpu计算,就更没必要使用多线程了,多线程的使用会增加cpu的负担。