如何在一个单独的线程中初始化一个类

本文关键字:一个 初始化 线程 单独 | 更新日期: 2023-09-27 17:50:15

我有一个类storedetails从数据库获得不同的值。从数据库中获取这些值并进行计算需要很长时间(由于数据库的设计不佳,一个存储超过76个不同的查询)。

生成报告的实现如下:

string week = "32";
string year = "2013";
string[] storecode = getallstoreforweekandyear(week, year); // get all store code that were active for the week and year
ArrayList ar = new ArrayList();
foreach (string item in storecode)
{
    storedetails sd = new storedetails(item, year, week);// this initializion I want to move to another thread because it is taking time.
    ar.Add(sd);
}
ar.TrimToSize();
DataTable dt = getdtfromarraylist(ar);// convert the arraylist of class to datatable
     Gridview1.Datasourc=dt; 

我的实现类是在2000多行代码

class storedetails
{
    public storedetails(string store,string year, string week)
{ 
//time taking implementation
}
}

是否有可能在单独的线程中进行类的初始化,这样我可以获得一些速度?

如何在一个单独的线程中初始化一个类

你看过。net 4.0中的任务并行库吗?它们大大简化了线程。

http://msdn.microsoft.com/en-us/library/dd460717 (v = vs.110) . aspx

object locker = new object();
Parallel.ForEach (storecode => item
     {
          storedetails sd = new storedetails(item, year, week);
          lock(locker)
          {
              ar.Add(sd);
          }
     });