Sto creando un'applicazione Windows Form che crea dinamicamente controlli basati su dati estratti da un database.VB/C# .net Aggiunge dinamicamente elementi di controllo con Background Worker
Ho il codice ottimo in background che carica i dati dal database e lo applica alle variabili, il problema che sto riscontrando è quando provo a creare i controlli usando questi dati, ottengo un errore multi-threading (Ulteriori informazioni: operazione cross-thread non valida:. controllo 'flowpanelMenuRules' si accede da un thread diverso dal thread è stato creato su)
sto usando l'evento BackgroundWorker_DoWork e il codice che non riesce è la seguente:
Me.flowpanelMenuRules.Controls.Add(PanelRule(i))
Il codice precedente è un semplice ciclo che passa attraverso la variabile (che è pulle d dal database) e la raccolta delle informazioni.
Qualcuno ha avuto esperienza nell'invocare in modo sicuro la suddetta linea? Io proprio non riesco a farlo funzionare a tutti :(
Grazie per l'aiuto, posso postare più di codice, se necessario.
Vedere https://stackoverflow.com/questions/142003/cross-thread-operation-not-valid-control-accessed-from-a-thread-other-than-the?rq=1 per chiarimenti su cosa è andato storto. –
I controlli non devono essere creati su un thread in background. Vengono assegnati al thread in cui sono creati e dovrebbero essere utilizzati solo lì. Dovresti invocare la creazione e l'aggiornamento specifici dei controlli, il resto può essere fatto nella BGW. –