组合框多线程错误

时间:2015-10-12 01:13:03

标签: vb.net combobox

我的代码有问题。由于组合框项目显示,我一直在使用backgroundworker获得多线程错误。请看下面我的代码,它是一个非常简单的代码,我打算大规模使用,我想要它做的是“If item”1“在label1中选择show item”1“。我只能假设存在问题因为Combobox在不同的线程中运行....

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    BackgroundWorker1.runworkerasync()
    BackgroundWorker1.WorkerReportsProgress = True
    Me.Cursor = Cursors.WaitCursor 'Cursor changes to wait
End Sub
Public Structure controlwithtext
    Public controlname As Control
    Public text As String
    Public Sub New(ByVal ctrl As Control, ByVal text As String)
        Me.controlname = ctrl
        Me.text = text

    End Sub
End Structure

Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork

If comboBox1.SelectedItem = "1" then
        BackgroundWorker1.ReportProgress(5, New controlwithtext(Label1, ComboBox1.SelectedItem))

End If

End Sub

Private Sub SetBackgroundWorker_ProgressChanged(ByVal sender As Object, 
            ByVal e As ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged

    If TypeOf e.UserState Is controlwithtext Then
        Dim cwt As controlwithtext = CType(e.UserState, controlwithtext)
        cwt.controlname.Text = cwt.text
    End If

End Sub

1 个答案:

答案 0 :(得分:2)

以下是如何从BackgroundWorker线程读取编写到控件的示例:

{{1}}