本人初学 现有一小项目 是数字计算的
从数据库中读取所有数据 N行10列 到datatable
现在如果整体运算会非常慢
现在想通过多线程来实现 每列单独一个线程计算
再把运算结果合并输出到另一个窗体的gridview中
求高手给个案例
或者推荐一个好的方法
从数据库中读取所有数据 N行10列 到datatable
现在如果整体运算会非常慢
现在想通过多线程来实现 每列单独一个线程计算
再把运算结果合并输出到另一个窗体的gridview中
求高手给个案例
或者推荐一个好的方法
调试欢乐多
td.Start();
第一列 第二列
第一行 1 2 。
第二行 2 2
第三行 3 2
第四行 4 2
第五行 8 2
第六行 6 2
第七行 7 2
第八行 8 2。。
鼠标托选第一列的2、3、4 然后点击button按钮
运算就是从第一行第一个单元格开始 依次递减
选中的234就是3个数作为减数 gridview内所有数据作为被减数 如
1-2、2-3、3-4、这是第一次循环
第二次就是从第二行开始 2-2、3-3、4-4 第三次循环就是从第三行开始 3-2.4-3.5-4
然后吧每次循环所减的结果 和一个固定的list对比 list包含结果则忽略 最后打印出不包含的结果
RYQYThread.IsBackground = true;
RYQYThread.Name = "CreateRYQY";
RYQYThread.Start(); //自定义方法ThreadRYQY,主要用于线程的调用
private void ThreadRYQY()
{
while (UploadState)
{
Thread.Sleep(60000); if (this.InvokeRequired)
{
RYQY ryqy = new RYQY(CheckRYQY); //实例化一个委托 fmain.Invoke(ryqy); //在拥用此控件的基础窗体句柄的线程上执行指定的委托
}
}
} private void CheckRYQY()
{
bool bol = false;
bol = ClsRYQY.CreateRYQY(x,y);
}
计算不要通过控件取值,
计算完毕后,
一次写入控件显示
本来你的情况用多线程是会提高效率的
但如果还通过ui访问数据进行计算
效果还是会一样糟糕
不要把数据全都读取到DataTable再考虑“分列计算”。实际上把过多数据读取到DataTable,这是最消耗时间的。如果各个线程的查询条件并不是完全一致的,那么他们独立地去访问数据库就行了。并且注意读取SQL Server时使用 With(NoLock) 方式!