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