2016-07-16 4 views
0

Неверное выполнение кросс-потоков: управляет текстовым полем, доступным из потока, отличным от потока, на котором он был создан. vb.netКак я могу решить эту ошибку поперечного потока?

Sub autocompletepayee() 

    Dim cmd2 As New Odbc.OdbcCommand 
    Dim dr As Odbc.OdbcDataReader 
    Dim myquery As String 
    myquery = "select payee from tbrequest" 
    cmd2.CommandText = myquery 
    cmd2.Connection = con 
    dr = cmd2.ExecuteReader 

    While dr.Read 
     txtPayee.AutoCompleteCustomSource.Add(dr.GetString(0)) 'this is the line where the error prompt 

    End While 
    dr.Close() 
+0

Смотреть это [ссылка] (http://stackoverflow.com/questions/1331009/кросс-нить-операция-не-действительным-VB-нетто). – Han

ответ

0

Это должно работать, хотя это могло бы быть меньше, если больше было известно о том, где код был расположен

Dim cmd2 As New Odbc.OdbcCommand 
    Dim dr As Odbc.OdbcDataReader 
    Dim myquery As String 
    myquery = "select payee from tbrequest" 
    cmd2.CommandText = myquery 
    cmd2.Connection = con 
    dr = cmd2.ExecuteReader 

    While dr.Read 
     If txtPayee.InvokeRequired Then 
      txtPayee.Invoke(Sub() 
           txtPayee.AutoCompleteCustomSource.Add(dr.GetString(0)) 'this is the line where the error prompt 
          End Sub) 
     Else 
      txtPayee.AutoCompleteCustomSource.Add(dr.GetString(0)) 'this is the line where the error prompt 
     End If 

    End While 
    dr.Close() 
Смежные вопросы