>Io uso delle combobox automatizzate che hanno il metodo PopolaValori(ByVal
>Query As String, ByVal ColonnaVisualizzata As String, ByVal ColonnaChiave
>As String)
>Questo metodo istanzia al suo interno una mia classe IterfacciaDati
>che repereisce i dati e li ficca nella combo.
>Il codice è questo:
>
>Public Sub PopolaValori(ByVal Query As String, ByVal ColonnaVisualizzata
>As String, ByVal ColonnaChiave As String)
> Dim Dati As New GestioneDati.InterfacciaDb
> Dati.FillDt(Query)
> Me.DataSource = Dati.Dt
> Me.DisplayMember = ColonnaVisualizzata
> Me.ValueMember = ColonnaChiave
>End Sub
>
>Devo cambiare approccio?
Si, mi dispiace darti questa brutta notizia, ma a vederla così, dovresti proprio cambiare approccio. Se hai intenzione di continuare ad utilizzare una combo automatizzata, devi mettere la logica a thread all'interno del controllo stesso, per il semplice motivo che la parte dove associ al datasource il datatable dovrebbe essere fatto nel RunWorkerCompleted.
Nella tua combo potresti definire un BackgroundWorker, creare le funzioni DoWork e RunWorkerCompleted, attaccare gli eventi con l'AddHandler, insomma farei una cosa di questo tipo:
Le proprietà DisplayMember e ValueMember direi che si possono valorizzare anche prima, altrimenti puoi passare anche quelli, basta passare al RunWorkerAsync un HashTable contenente le tre variabili necessarie.

- Michael -
http://blogs.dotnethell.it/Regulator/