Chiusura form in thread-safe

lunedì 28 luglio 2008 - 17.32

luka83 Profilo | Newbie

Salve a tutti, premetto che non ho molta esperienza con visual basic.net e in questi giorni mi sono dilettato a creare applicazioni multi-thread, ma ora mi sono bloccato su questo errore:
"Operazione cross-thread non valida: è stato eseguito l'accesso al controllo 'Form1' da un thread diverso da quello da cui è stata eseguita la creazione."
In poche parole ho creato un form child che al suo avvio genera un nuovo thread che fa una serie di controlli su una periferica usb e al termine dovrebbe chiudermi la form stessa... qualcuno può aiutarmi?
Grazie
Luca

freeteo Profilo | Guru

ciao,
se vuoi qualcosa di semplice ma non proprio "pulito", puoi usare la proprietà:

Control.CheckForIllegalCrossThreadCalls = false;

questo ti toglie il controllo di Cross-Thread.
Il corretto uso sarebbe far fare l'esecuzione del metodo al thread che ha creato la form, quindi diciamo alla form stessa, con un codice che usa delegate ovviamente, qualcosa tipo:
this.Invoke(new MethodInvoker( delegate() { this.Close(); }));
ma a volte la prima è la migliore, se l'hanno messo li comodo, perchè non usarlo?


ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5