我有一個.net窗口應用程序(一種形式),有許多按鈕,像加載數據從數據庫,下一頁,上一頁,搜索等我想使用backgroundworker所有的按鈕,當他們被點擊,所以我的用戶界面不被凍結。一個backgroundworker對象或多個backgroundworker對象?
問題是,我應該在整個窗體中爲所有按鈕使用1個backgroundworker對象還是每個按鈕使用單獨的backgroundworker?
我有一個.net窗口應用程序(一種形式),有許多按鈕,像加載數據從數據庫,下一頁,上一頁,搜索等我想使用backgroundworker所有的按鈕,當他們被點擊,所以我的用戶界面不被凍結。一個backgroundworker對象或多個backgroundworker對象?
問題是,我應該在整個窗體中爲所有按鈕使用1個backgroundworker對象還是每個按鈕使用單獨的backgroundworker?
這篇文章很有用,如果你只使用一個,你需要將所有的數據庫操作包裝到一個結果中。否則,你應該使用多個backgroundworkers。
Handling multiple operations using BackgroundWorker
多個會更好。
您可以使用任務工廠進行此操作。無需創建自己的後臺工作人員,速度更快。
Task<bool> task = Task.Factory.StartNew<bool>
(() => /*Do you button operations */);
你可以閱讀更多關於此任務:http://msdn.microsoft.com/en-us/library/system.threading.tasks.task.aspx
請注意,這需要.NET 4.5,如果你是針對老年Framewroks看看線程池: http://msdn.microsoft.com/en-us/library/3dasc8as.aspx