Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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: 391
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: 1344
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: 6402
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: 391
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: 6402
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: 391
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