Web服务调用-BackGroundWorker未按预期的VB.NET运行的进度条
我正在VB.NET中创建一个应用程序,用户可以通过OpenFileDialog附加XML并在Web服务中启动它 我希望在底部有一个进度条,因为此时GUI挂起,用户认为它在等待响应时崩溃了 我的代码如下:Web服务调用-BackGroundWorker未按预期的VB.NET运行的进度条,vb.net,web-services,Vb.net,Web Services,我正在VB.NET中创建一个应用程序,用户可以通过OpenFileDialog附加XML并在Web服务中启动它 我希望在底部有一个进度条,因为此时GUI挂起,用户认为它在等待响应时崩溃了 我的代码如下: Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click BackgroundWorker1.RunWorkerAsync() End Sub Private Sub Back
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
BackgroundWorker1.RunWorkerAsync()
End Sub
Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
For I = 0 To 100 'Telling the program to count from 0 - 200
If hubURLtxtbx.Text = "LIVE" Then
XStreamLive()
Else
XStreamUAT()
End If
If BackgroundWorker1.CancellationPending = True Then
e.Cancel = True
Exit For
Else
'Telling the program to report the progress done by the ReportProgress
BackgroundWorker1.ReportProgress(I)
'Telling the program to stop after advancing one integer for 1 second.
System.Threading.Thread.Sleep(1000)
End If
Next
End Sub
Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, _
ByVal e As System.ComponentModel.ProgressChangedEventArgs) _
Handles BackgroundWorker1.ProgressChanged
ProgBar.Value = e.ProgressPercentage
End Sub
Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, _
ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) _
Handles BackgroundWorker1.RunWorkerCompleted
ProgBar.Value = 100
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
BackgroundWorker1.CancelAsync()
BackgroundWorker1.Dispose()
End Sub
基本上,在代码如上所述的情况下,在我收到来自web服务的XML响应后,进度条正在更新
我想让它这样做,通话时,通话的进展是更新,然后当通话成功时,酒吧是完全满的
有人能帮我解释一下吗
干杯
詹姆斯
更新
好的,我修改了一些代码,现在当XML返回时,进度条最大值为100,但它仍然冻结GUI,并且从我单击按钮的那一刻起不会“增加”,当收到XML时,它会一次性填充进度条
更新代码
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
BackgroundWorker1.RunWorkerAsync()
If hubURLtxtbx.Text = "LIVE" Then
XStreamLive()
Else
XStreamUAT()
End If
End Sub
Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, _
ByVal e As System.ComponentModel.ProgressChangedEventArgs) _
Handles BackgroundWorker1.ProgressChanged
If GlobalVariables.response = "" Then
ProgBar.Value = e.ProgressPercentage
Else
ProgBar.Value = 100
End If
End Sub
我将sub移动到BackGroundWorker的dowwork中,因为服务没有返回处理数据的“状态”,所以我可以将任何内容返回到我的变量以更新进度条 因此,我决定使用字幕进度条样式来显示GUI正在做一些事情,然后在流程结束时100%使用连续样式来显示它已经完成 J我猜XStreamLive()和XStreamUAT()是执行上传的地方。如果是这样,则在GUI线程上运行它们,而不是将它们卸载到后台工作程序。这意味着在上传完成之前,GUI不会更新。作为旁注,您需要进度条来实际显示完成百分比,还是仅仅指示GUI正忙?