我很困惑。是的,我明白我不能使用同一個背景工作者同時完成兩項任務。我不明白的是這個。這裏是我的代碼(這一切事都設置一個進度條的marqueeanimationspeed ...這個BackgroundWorker目前很忙,不能同時運行多個任務
'THE FOLLOWING SUB TOGGLES THE PROGRESS BAR
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
'CHECK THE STATE OF THE PROGRESS BAR AND TOGGLE IT
If ToolStripProgressBar1.MarqueeAnimationSpeed = 0 Then
ToolStripProgressBar1.MarqueeAnimationSpeed = 22
End If
ToolStripProgressBar1.MarqueeAnimationSpeed = 0
End Sub
好了,多長時間能這樣可能把?不工人做任務和退出?所以我暫停(system.threading.thread.sleep(2000)...同樣的問題,使它20秒...同樣的問題。
所以我認爲這是一個簡單的東西,我失蹤了,但我花了超過一個小時的搜索,我沒有得到它
所有我想在這裏完成的是在用戶界面運行別的東西時啓動選框進度條,然後停止它。我可以創建另一個背景工作者並使用它,但我想了解爲什麼第一個工作沒有完成任務。
謝謝,再說一次,是的,我花了一個小時尋找,我找到各種「解決方案」,但沒有解釋爲什麼這件事沒有完成。
OK所以這裏是子調用BGW
'THE FOLLOWING SUB FIRES THE SETTING CONNECTION STRINGS SUB
Private Sub SetCSButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SetCSButton.Click
'START THE PROGRESS BAR & CHANGE THE LABEL
BackgroundWorker1.RunWorkerAsync()
Threading.Thread.Sleep(1000)
ToolStripStatusLabel1.Text = "Preparing the connection strings..."
Me.Refresh()
thread3 = New System.Threading.Thread(AddressOf SetConnectionStrings)
thread3.Start()
'STOP THE PROGRESS BAR & CHANGE THE LABEL
BackgroundWorker2.RunWorkerAsync()
Threading.Thread.Sleep(1000)
ToolStripStatusLabel1.Text = "Standing by..."
Me.Refresh()
End Sub**strong text**
我有一個20秒延遲,但仍是第一BGW沒有完成。我知道這很簡單,但我不明白,這就是我在這之後的全部。
我DID改變了代碼,不使用相同的方法,因爲我在寫這個問題的時候正在嘗試......我不明白爲什麼一個簡單的操作從來沒有,顯然,完成...有說,它完成了,因爲我能夠使用runworkercompleted事件顯示msgbox。所以,當我嘗試並且沒有傳達時,這些並不是關於編碼的正確或錯誤的方式,我知道它錯了,只是試圖快速和骯髒,不管如何,我現在沒有這樣做,但我不明白爲什麼BGW「仍在工作」。一定有一些我不知道的簡單的事情。
感謝
編輯之後:並不是很清楚,因爲現在Bg2和Thread3進入了遊戲。但是,當Bgw1和Bgw2以某種方式引用相同的實例時,它有意義,Thread.Sleep()綁定了消息循環,因此Completed事件不能被處理。 –