I controlli non sono mai stati thread safe... vuoi dirmi che nella versione 1.1 non c'era alcuna protezione o precisazione a riguardo?Originariamente inviato da MItaly
Si tratta di un'innovazione del .NET Framework 2.0: poiché si sono resi conto che i controlli effettivamente non sono thread-safe hanno aggiunto questo meccanismo di protezione. L'unica è modificare il codice in modo che sia sempre il thread padre ad accedere ai controlli.VVoVe:
Non penso che ci sia bisogno di "esclamare". La tua soluzione non è appropriata e non sicura, pertanto continuando per quella strada arrivi ad un vicolo cieco, e qualsiasi urlo tu possa fare, non farà cadere il muro.Originariamente inviato da w_t
Ma io ho la necessita' di comandare i Controlli dal mio Thread!!!
il Thread Padre apre il Form1 e Crea la ProgressBar, il mio Thread la popola, altrimenti non mi si aprirebbe il Form1 fino a che non e' popolata la ProgressBar!!!
Peraltro, io suggerirei una soluzione molto più pulita: se il thread compie operazioni parallele, non dovrebbe essere lui ad aggiornare il controllo visuale, che si sincronizza con il thread primario, ma si deve dedicare esclusivamente al compito che gli è stato assegnato.
Semplicemente, introduci nel thread una proprietà che indichi il progresso dell'operazione e, dal form contenente la ProgressBar, magari con un semplice Timer, periodicamente leggi questo valore (quindi, con un'operazione del tutto innocua verso il thread) e aggiorna la ProgressBar.
In sostanza, il thread compie il lavoro e restituisce informazioni sullo stato, il form periodicamente legge questo valore in modo asincrono e aggiorna il controllo visuale.
Ciao!![]()

VVoVe: 
Rispondi quotando