1
我有一个网站,它创建某种形式的报告。整个过程需要一分钟。为了提高我在想打开同步控制器为异步控制器的性能。使用异步控制器填充数据表
我经历了很多话题的阅读和指南但我只是似乎没有得到它的窍门。
现在我有一个DataSet,它有15个DataTables。每个〜15个数据表都由不同的查询填充。
这个页转换成一个异步控制器我创建了一个的ConnectionManager,创建15周的getMethods为每个数据表和数据表的每个是在模型中。我还创建了2控制器 - 一个名为[名称]异步和一个叫[名称]完成。但是,现在我被卡住了。
如何创建〜15个线程,并指定每个任务来填充实现getMethod一个DataTable?
这里的代码的某些部分。
控制器
public class RunTableStatisticsController : AsyncController
{
public void RunTableStatisticsAsync()
{
AsyncManager.OutstandingOperations.Increment(2);
// Create Threads who populate RunTableStatisticsModels DataTables
}
public ViewResult RunTableStatisticsComplete(RunTableStatisticsModel voModel)
{
return View(voModel);
}
}
getMethod
public static DataTable getDataTable1()
{
try
{
DataTable dtTemp= new DataTable();
dtTemp.Columns.Add(new DataColumn("ColumnName1", typeof(string)));
dtTemp.Columns.Add(new DataColumn("ColumnName2", typeof(string)));
string sQuery = "select * from 1";
// Instantiate the Command Object
OleDbCommand dbCommand = new OleDbCommand(sQuery, ..MyConnectionManager.Connection);
dbCommand.CommandType = CommandType.Text;
// Execute the Stored Procedure
OleDbDataReader dr = dbCommand.ExecuteReader();
while (dr.Read())
{
DataRow row = dtTemp.NewRow();
row["ColumnName1"] = dr["ColumnName1"]);
row["ColumnName2"] = dr["ColumnName2"];
dtTemp.Rows.Add(row);
}
return dtTemp;
}
catch (Exception ex)
{
throw new Exception("Error: Reading database.", ex);
}
}
Correspondend我必须在我的模型
public DataTable dtTable1{ get; set; }
然后,我有一个观点,其具有Telerik的网格EXTENS将由数据填充的离子。
这正是我所期待的。从这里我可以完成休息。非常感谢。 – seN 2012-07-19 14:26:51