2011-03-18 77 views
2

我需要使用backgroundwoker運行在後臺多任務多的BackgroundWorker vb.net

dim mybacgroundwokers(10) as backgroundwoker

BackgroundWorker的事件過程中

,我可以做財產以後這樣的,因爲我沒有一個想法

mybackgroundwoker_dowork(,,index) 

select case index 
case 1 
'dowork for backgroundworker1 
case 2 
'dowork for backgroundworker2 
end select 

或如何處理多個BackgroundWorker的

如果非此是可能的BackgroundWorker的,怎麼樣我使用線程多線程來做到這一點嗎?

感謝

回答

1

你應該使用多個Backgroundworkers有一個合適的名稱,比如:

Dim CountSheepBackgroundWorker As BackgroundWorker WithEvents 
Dim CountStarsBackgroundWorker As BackgroundWorker WithEvents 
Dim StackEggsBackgroundWorker As BackgroundWorker WithEvents 

如果你絕對要使用數組,Visual Studio將不會幫助你的DoWork的替補:

Dim MyBackgroundWorkers(9) As BackgroundWorker 
' Add first 
MyBackgroundWorkers(0) = new BackgroundWorker 
AddHandler MyBackgroundWorkers(0), AddressOf FirstBackgroundWorker_DoWork 
MyBackgroundWorkers(0).RunWorkerAsync() 
' Add second etc 
+0

我如何爲所有後臺工作人員使用相同的工作人員 – Smith 2011-05-31 16:09:40

+0

在Designer中選擇第一個Backgroundworker並通過雙擊該事件添加DoWork處理程序,在其他Backgroundworkers中選擇現有的Sub從下拉菜單中選擇。這擴展了Sub的'Handles ...'子句。或者,你可以使用多個'AddHandler BackgroundWorker1 ...'和相同的Sub。 – 2011-06-01 10:34:25

2

你可能想看看這個線程

Trigger Backgroundworker Completed event

您的DIM命令簡單地創建一個可存儲多達11(請記住,索引從0開始),後臺工作的數組對象。

因此,您需要創建11個新的BackgroundWorker對象並將它們存儲在數組的每個元素中。

然後,您需要自行配置每個BackgroundWorker對象以執行所需的任何工作。將它們放在一個數組中並不會改變任何這一點。

+0

這與我的問題無關。我試圖簡單地創建多個線程來處理我的應用程序中的更多任務,並且我使用backgroundworker。 AM新的主題,我需要建議和幫助 – Smith 2011-03-20 09:09:17

+0

好的,但你需要記住,像編程一樣困難,多線程編程可能是+幾個數量級+更難。實際上+從來沒有+您可以使用多線程「簡單地」做任何事情。不要試圖說服你,我只是說你真的需要對你爲什麼想要添加多個線程以及在潛入之前使用該技術可以完成什麼有一個很好的理解。 – DarinH 2011-03-22 14:31:09

+0

例如,你希望允許後臺功能,同時保持用戶界面「活躍」,並防止應用程序看起來像它的鎖定?還是你只需要同時處理一堆隊列?如果是後者,則可以更有意義地創建一個獨立的應用程序,在獨立的進程中運行,您可以根據需要啓動全新的進程,並使用數據庫表來記錄每個工作人員的進度。有很多方法可以解決這個問題,線程是一個複雜的話題。 – DarinH 2011-03-22 14:33:47