我注意到,隨着我的應用程序數據庫的增長,返回結果所花的時間也增加了。在開始時這是微不足道的,因爲返回數據源的時間很少。是否有可能爲後臺工作人員提供一種通用方法?
現在我處於臨時讓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