Errore nel thread in vb net 2005

giovedì 12 gennaio 2006 - 17.13

trinity Profilo | Guru

Ragazzi sto convertendo un programma da vb net 2003 a vbnet2005 solo che in un thread che nel 2003 mi funziona perfettamente, nel 2005 mi genera il seguente messaggio di errore:

Cross-thread operation not valid: Control 'ListView3' accessed from a thread other than the thread it was created on.

Vi posto il mio codice:

dichiaro il thread:

Public avvio As New System.Threading.Thread(AddressOf send_file)

Private Sub send_file()
For idlista = 0 To Me.ListView3.Items.Count - 1
' setto la riga di destinazione della progressbar
Me.ListView3.Items(idlista).Selected = True
ListView_AddProgressBar(Me.ListView3, idlista, 4)
Me.ListView3.SelectedItems(idlista).SubItems(3).Text = "Inserimento metadati in corso..."

ecc...

End sub

l'errore si determina quando il debug passa sul codice: Me.ListView3.Items(idlista).Selected = True

Ciao

Brainkiller Profilo | Guru

>Cross-thread operation not valid: Control 'ListView3' accessed
>from a thread other than the thread it was created on.

E' evidente non puoi accedere a controlli da un Thread diverso da quello che ha creato i controlli stessi. La tua applicazione non è "Thread Safe". La programmazione multithreaded non è assolutamente banale. Modificando lo stato di una proprietà di un oggetto da più thread si può arrivare in una situazione in cui il controllo è in un stato indefinito, e ricevi l'errore.

Studiati questo paragrafo:
http://msdn2.microsoft.com/en-us/library/ms171728.aspx

ciao


David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
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