Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1
    Utente di HTML.it L'avatar di SigAlexey
    Registrato dal
    May 2014
    residenza
    Treviso
    Messaggi
    186

    [VB.NET] Thread secondario per ciclo

    Ciao a tutti ragazzi!
    Ho un ciclo che vorrei andasse avanti all'infinito, o meglio finchè non premo un tasto (ad esempio un tasto della tastiera o anche uno creato nel mio form)

    Presumo debba ricorrere ai Thread no?

  2. #2
    Utente di HTML.it L'avatar di SigAlexey
    Registrato dal
    May 2014
    residenza
    Treviso
    Messaggi
    186
    Ho provato a creare un nuovo thread, informandomi in giro...

    Questo prima di tutto
    codice:
    Imports System.Threading
    Poi ho dichiarato questo

    codice:
    Dim Th2 As New Threading.Thread(AddressOf thread2)
    Ho creato la Sub

    codice:
    Sub thread2()
            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
        End Sub
    e infine con un tasto lo faccio partire

    codice:
    Th2.Start()
    Ho sbagliato qualcosa nel codice??

    perchè quando premo il tasto mi esce questo:

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

    Più o meno ho capito cosa significa, ma non saprei come risolvere.

    Praticamente è una telecamera che riprende, io devo fare delle foto, unirle e farle scorrere in tempo reale in una picturebox (e tutto questo funziona)

    Il problema è che attualmente lo faccio andare per un tot di cicli stabiliti, invece vorrei far andare la visualizzazione in un thread a se in modo da poterlo far andare avanti all'infinito e quando voglio, premendo un tasto stop, fermarlo.

    Ho visto che in teoria basta fare Thread.Abort, il punto è che sono bloccato a ben prima di fermarlo di mia volontà D:

  3. #3
    Utente di HTML.it L'avatar di SigAlexey
    Registrato dal
    May 2014
    residenza
    Treviso
    Messaggi
    186
    Qualcuno saprebbe aiutarmi???

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Quote Originariamente inviata da SigAlexey Visualizza il messaggio
    Qualcuno saprebbe aiutarmi???
    Ciao
    il tuo è un problema abbastanza comune.
    Di conseguenza anche la soluzione è trattata in diversi esempi su internet.
    Cercando un minino si trova di tutto.
    Vedi qua:
    http://www.codeproject.com/Articles/...tion-not-valid

  5. #5
    Utente di HTML.it L'avatar di SigAlexey
    Registrato dal
    May 2014
    residenza
    Treviso
    Messaggi
    186
    Ok grazie!
    Nella sub MyThread1 devo scrivere il codice che voglio far eseguire al secondo thread vero??

    E su AccessControl che devo scrivere

  6. #6
    Utente di HTML.it L'avatar di SigAlexey
    Registrato dal
    May 2014
    residenza
    Treviso
    Messaggi
    186
    E in ogni caso, sarò stupido ma non ho ancora trovato la soluzione D:

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Quote Originariamente inviata da SigAlexey Visualizza il messaggio
    Ok grazie!
    Nella sub MyThread1 devo scrivere il codice che voglio far eseguire al secondo thread vero??

    E su AccessControl che devo scrivere
    Ma hai letto l'articolo? Hai capito qual'è l'errore che ti viene segnalato?
    Il problema sta nel fatto che il tuo thread secondario che crei tu vuole accedere a un controllo gestito dal thread principale che lavora sulla GUI.
    Quindi:
    1) in myThread metti l'eventuale codice che prevede calcoli o elaborazione su oggetti creati all'interno di quel thread (o riferimenti a essi? CREDO)
    2) in AccessControl puoi modificare i controlli della GUI, quindi la tua picturebox...
    In ogni caso fai delle prove e se ancora non funziona posta qui il codice

  8. #8
    Utente di HTML.it L'avatar di SigAlexey
    Registrato dal
    May 2014
    residenza
    Treviso
    Messaggi
    186
    ok e la parte di codice devo lasciarla??

    Button2.Visible = True
    Button3.Visible = True
    Opacity = 1
    ShowInTaskbar = True

  9. #9
    Utente di HTML.it L'avatar di SigAlexey
    Registrato dal
    May 2014
    residenza
    Treviso
    Messaggi
    186
    Allora... con il codice non mi si presenta più l'errore, però la GUI non è comunque accessibile...
    Il fine era quello di avere i pulsanti del mio form attivi mentre visualizzavo la picturebox, in modo da poterlo bloccare quando voglio

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Quote Originariamente inviata da SigAlexey Visualizza il messaggio
    Allora... con il codice non mi si presenta più l'errore, però la GUI non è comunque accessibile...
    Il fine era quello di avere i pulsanti del mio form attivi mentre visualizzavo la picturebox, in modo da poterlo bloccare quando voglio
    Rispetto alla tua risposta predecente,
    codice:
    Button2.Visible = True
    Button3.Visible = True
    
    era solo nell'esempio per far capire che il thread secondario riusciva a modificare le proprietà dei controlli gestiti dalla GUI

    In ogni caso, se hai fatto le cose per bene, dovrebbe andare.. perché dici che la GUI non risulta accessibile? Il trucco dei 2 (o più thread) è proprio per questo, per far si che un thread secondario esegua del lavoro lasciando comunque l'interfaccia (e il thread che la gestisce) recettiva agli eventi.
    Dovresti postare il codice.
    Meglio ancora: guardati il controllo backgroundWorker
    Definisci la sub Work, la fai partire e poi c'è l'evento di "aggiurnamento" della GUI, oltre a intercettare la richiesta di chiusura del Thread stesso..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.