Vb.net 从后台线程访问主线程数据
我正在使用backgroundworker来处理数据,而用户仍然可以自由地单击另一个按钮来中止处理。 但是,backgroundworker中的代码需要几段数据,例如,它需要知道是否选中了单选按钮 有没有办法从后台线程访问另一个线程中的数据?或者我应该创建保存这些信息的全局变量吗Vb.net 从后台线程访问主线程数据,vb.net,multithreading,asynchronous,Vb.net,Multithreading,Asynchronous,我正在使用backgroundworker来处理数据,而用户仍然可以自由地单击另一个按钮来中止处理。 但是,backgroundworker中的代码需要几段数据,例如,它需要知道是否选中了单选按钮 有没有办法从后台线程访问另一个线程中的数据?或者我应该创建保存这些信息的全局变量吗 Public Class Test Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) H
Public Class Test
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Button1.Content = "Working..."
BackgroundWorker1.RunWorkerAsync()
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
If RadioButton1.IsChecked Then
MsgBox("It works")
End If
End Sub
End Class
您可以将RadioButton选中状态传递给RunWorkerAsync方法,如下所示:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
BackgroundWorker1.RunWorkerAsync(RadioButton1.Checked)
End Sub
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim checked As Boolean = CBool(e.Argument)
If checked Then
MessageBox.Show("It works")
End If
End Sub
如果您需要从循环内部连续检查RadioButton,请告诉我,因为这会有所不同。您可以将RadioButton检查状态传递给RunWorkerAsync方法,如下所示:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
BackgroundWorker1.RunWorkerAsync(RadioButton1.Checked)
End Sub
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim checked As Boolean = CBool(e.Argument)
If checked Then
MessageBox.Show("It works")
End If
End Sub
如果您需要从循环内部连续检查单选按钮,请告诉我,因为这会有所不同。您是指数据还是UI控件?如果/当单击按钮或某物时,您可以从UI线程中止工作程序,并在
dowworkeventargs
中传递所需的数据,如布尔值,您是否只需要知道BackgroundWorker启动时RadioButton的状态?…还是需要在其处理过程中不断检查状态(并改变正在发生的事情,可能是一个循环)?您指的是数据还是UI控件?如果/当单击按钮或某事时,您可以从UI线程中止worker并传递它所需的数据,如DoWorkEventArgs
中的布尔值,您是否只需要知道BackgroundWorker启动时RadioButton的状态?…还是需要在其处理过程中不断检查状态(并改变正在发生的事情,可能是循环)?