
Originariamente inviata da
renygade
Cioè che genera eventi. Solo così puoi impostare gli Handles di risposta sulle sub.
Lascia stare la soluzione con più thread generati da te e concentrati sul backgroud, che è fatto apposta per semplificare la casistica come la tua. Hai un ciclo che gira sul suo thread, devi solo gestire l'evento di cancellazione del processo di elaborazione e di stop del ciclo sul thread.
Ok, infatti stavo andando in quella direzione.
Per risolvere il problema degli Handles ho trovato una soluzione: Dalla pagina Design ho aggiunto dalla ToolBox BackgroundWorker.
E in questo modo riesco ad accedere al programma.
Ora però mi ridà lo stesso errore iniziale, nel momento in cui premo il tasto che fa partire il salvataggio di tutto.
Questo è quello che ho fatto:
DoWork
codice:
Private Sub bgwScan_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles bgwScan.DoWork
'codice che lavora nel thread principale
cont3 = 1005
Dim cont As Integer = 0
cont6 = 0
'ciclo per acquisizione/visualizzazione foto
While cont <> 50
acquisisci(cont)
cont = cont + 1
'System.Threading.Thread.Sleep(15)
End While
If bgwScan.CancellationPending Then
e.Cancel = True
End If
End Sub
Tasto di avvio
codice:
Private Sub cmdRGB32_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRGB32.Click
bgwScan.RunWorkerAsync()
End Sub
Tasto di chiusura
codice:
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
bgwScan.CancelAsync()
End Sub
Facendo così però, nel momento in cui premo il tasto di avvio, mi da l'errore che si presentava all'inizio, ossia "Cross-thread operation not valid: Control 'IcImagingControl1' accessed from a thread other than the thread it was created on..."
Non so se può essere utile, però nel form ho anche questo "IcImagingControl1", il quale è praticamente una specie di picturebox, che mi fa vedere ciò che vede la telecamera.
E' una rappresentazione video nello schermo.
La utilizzo per vedere cosa sto riprendendo.
Questa parte all'avvio dell'applicazione e nel momento in cui premo il tasto di avvio dell'assunzione e visualizzazione dell'immagine (il ciclo di cui stiamo trattando), la schermata della telecamera diventa nera e appunto mi esce l'errore di prima.