Oppure

Loading
19/07/21 13:53
fosforo
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 19/07/21 15:48
aaa
19/07/21 17:13
Carlo
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:
ThreadWorker mioThread = new ThreadWorker();
mioThread.ThreadDone += mioThreadCompletato;

/*......*/

class ThreadWorker
{
        public event EventHandler mioThreadCompletato;

        public void Run()
        {
            // Do a task

            if (mioThreadCompletato!= null)
                mioThreadCompletato(this, EventArgs.Empty);
        }
}


In questo modo, il programma continua a funzionare, e quando il compito in background è terminato, nell'evento preposto esegui il codice del caso:
void mioThreadCompletato(object sender, EventArgs e)
    {
    //.....
    }

Ultima modifica effettuata da Carlo 19/07/21 17:32
in programmazione tutto è permesso
19/07/21 18:37
nessuno
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 19/07/21 18: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à.
20/07/21 7:13
fosforo
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.
aaa
20/07/21 19:59
nessuno
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à.
09/08/21 15:09
fosforo
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 10/08/21 8:26
aaa