如何在一个单独的线程中初始化一个类
本文关键字:一个 初始化 线程 单独 | 更新日期: 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);
}
});