116 messaggi dal 31 maggio 2008
Salve a tutti ho un problema : quando richiamo il metodo DoWork
mi da questo errore :

Operazione cross-thread non valida: è stato eseguito l'accesso al controllo 'selection1' da un thread diverso da quello da cui è stata eseguita la creazione.

come posso fare?

questo avviene appena incontra la prima textBox : selection1.Text = roundA;



Thread t = new Thread(new ThreadStart(DoWork));

t.Start();
Ciao,

regola aurea per lo sviluppatore di applicazioni multithreaded in windows forms/wpf: è *vietato* accedere agli elementi della UI da un thread diverso da quello principale.

Come fare allora?
1) usi Control.Invoke, come descritto qui
http://msdn.microsoft.com/en-us/library/zyzhdc6b.aspx
2) usi il comodissimo BackgroundWorker
http://msdn.microsoft.com/en-us/library/8xs8549b.aspx

HTH
m.
176 messaggi dal 04 giugno 2007
Contributi | Blog
Nota bene - la limitazione non deriva da WPF/Winforms. E' una limitazione molto profonda in Windows. Un giorno la elimineranno, ma fino ad allora, i thread non sono tutti uguali - il thread che gestisce la pompa dei messaggi e' l'unico che possa interagire con l'utente tramite la UI

Nel tuo caso, lo UI-thread e' quello che crea e detiene i controlli.

Saluti

--Alessandro

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.