我注意到,随着我的应用程序数据库的增长,返回结果所花的时间也增加了。在开始时这是微不足道的,因为返回数据源的时间很少。是否有可能为后台工作人员提供一种通用方法?
现在我处于临时让UI停止响应几秒的时间点,但我想创建background workers
来完成这些任务。
创建这些的问题是,有大约9个按钮需要后台工作人员,他们所做的只是在DLL中调用不同的方法。有没有办法使用通用方法为后台工作人员使用API创建这些后台工作人员,还是应该创建与每个按钮相对应的Enum
,并且是构造后台工作人员的方法所采用的参数。因此,我可以使用简单的switch
来执行我选择的DLL中的任何方法?
示例代码:
void bg_DoWorkImports(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
try
{
e.Result = EngineBllUtility.GetNotImportedFiles(connectionString);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
void bg_RunWorkerCompletedImports(object sender, RunWorkerCompletedEventArgs e)
{
DataSet temp = (DataSet)e.Result;
if (e.Result != null)
{
importFileGridView.DataSource = temp.Tables[0];
}
}
你使用的是.NET 4吗?对于这种类型的场景,TPL是BackgroundWorker的一个很好的替代方案... – 2011-12-21 18:44:24
不幸的是,.NET 3.5 – ediblecode 2011-12-21 18:45:22
将对Rx框架进行依赖是一个选择,因为它会让你获得TPL吗? http://msdn.microsoft.com/en-us/data/gg577610 – 2011-12-21 18:46:56