我很困惑。是的,我知道我不能使用同一个后台工作人员同时执行两项任务。我不明白的是这个。这是我的代码(所有这些都是设置进度条的 marqueeanimationspeed ...
'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秒......同样的问题。
所以我假设这是我错过的一件简单的事情,但我花了一个多小时搜索但我不明白。
我在这里想要完成的只是在 UI 运行其他东西时启动选取进度条,然后停止它。我假设我可以创建另一个后台工作人员并使用它,但我想了解为什么第一个工作人员没有完成任务。
谢谢,再一次,是的,我花了一个小时搜索,找到了各种“解决方案”,但没有解释为什么这件事没有完成。
好的,这里是调用 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 仍然没有完成。我知道这很简单,但我不明白,这就是我在这里所追求的。
我确实更改了代码,并且没有使用与我写这个问题时尝试的方法相同的方法......我不明白的是为什么一个简单的操作显然永远不会完成......话虽如此,它确实完成了,因为我能够使用 runworkercompleted 事件显示一个 msgbox。因此,正如我尝试但未能传达的那样,这不是关于编码的正确或错误方式,我知道这是错误的,只是试图快速而肮脏,不管怎样,我现在不这样做,但我不明白为什么BGW“仍在工作”。一定有一些我不知道的简单的事情。
谢谢