Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Capire quando un Thread ha finito le operazioni
Forum - C# / VB.NET - Capire quando un Thread ha finito le operazioni

Avatar
fosforo (Normal User)
Expert


Messaggi: 365
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 15:53
Lunedì, 19/07/2021
Ciao

Ho un Thread che lista i file in una cartella condivisa.
Per fare questa operazione ci mette un po di tempo.

Vorrei fermare il programma fino a fine Thread e farlo ripartire una volta finito.
Come posso fare?



Grazie

Ultima modifica effettuata da fosforo il 19/07/2021 alle 17:48
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 972
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 19:13
Lunedì, 19/07/2021
Ho difficoltà senza codice, perché le modalità d'uso non sono univoche.
La prima cosa strana è che prima lanci un thread, poi blocchi il programma e aspetti  finquando il thread non termina.

In genere quando si lancia un thread è perché si vuole continuare a fare altro, poi se si ha bisogno si attiva anche l'evento che si scatenerà alla sua conclusione:
Codice sorgente - presumibilmente C#

  1. ThreadWorker mioThread = new ThreadWorker();
  2. mioThread.ThreadDone += mioThreadCompletato;
  3.  
  4. /*......*/
  5.  
  6. class ThreadWorker
  7. {
  8.         public event EventHandler mioThreadCompletato;
  9.  
  10.         public void Run()
  11.         {
  12.             // Do a task
  13.  
  14.             if (mioThreadCompletato!= null)
  15.                 mioThreadCompletato(this, EventArgs.Empty);
  16.         }
  17. }



In questo modo, il programma continua a funzionare, e quando il compito in background è terminato, nell'evento preposto esegui il codice del caso:
Codice sorgente - presumibilmente C# / VB.NET

  1. void mioThreadCompletato(object sender, EventArgs e)
  2.     {
  3.     //.....
  4.     }



Ultima modifica effettuata da Carlo il 19/07/2021 alle 19:32


in programmazione tutto è permesso
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6176
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:37
Lunedì, 19/07/2021
A che ti serve un altro thread se blocchi il principale finché lbthread non termina ?

Non ha senso

Comunque usa semplicemente il metodo Join del thread

Ultima modifica effettuata da nessuno il 19/07/2021 alle 20:39


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 365
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 9:13
Martedì, 20/07/2021
Ciao

Grazie per l'aiuto.

Avete perfettamente ragione, ma sto studiando un programmino che controlla dei sensori di processo.

Il programma principale continua a lavorare mentre i Trhead controllano i sensori.
Fino a quando tutti i sensori sono a riposo tutto funziona.
Quando uno dei sensori arriva a un certo livello il programma va in Wait e aspetta la fine del processo.

Ripeto è solo uno studio.
Ogni consiglio è ben accetto.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6176
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:59
Martedì, 20/07/2021
Non ho capito.

"Quando uno dei sensori arriva a un certo livello il programma va in Wait e aspetta la fine del processo."

Che vuol dire?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 365
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 17:09
Lunedì, 09/08/2021
Cerco di semplificare:

Sensore 1=0
Sensore 2=0
Sensore 3=0
Sensore 4=0

Il programma va avanti nella sua esecuzione.

Sensore 1=1
Sensore 2=0
Sensore 3=0
Sensore 4=0

Il programma si ferma e aspetta che il Sensore 1 torna a 0.

Ultima modifica effettuata da fosforo il 10/08/2021 alle 10:26
PM Quote