Domanda

Ho una coda, che è fondamentalmente la coda di produttore / consumatore nel albahari.com filettatura libro, che prende un elemento di coda dalla coda, che è un blocco di esecuzione un'azione dalla coda e poi chiama un metodo per eseguire l'ActionList all'interno dell'elemento di coda.

posso uccidere la coda abbastanza facilmente Enqueing un actionblock nullo e bloccare il thread principale facendo un giro / aspetto con un Thread.sleep () fino a quando il conteggio di coda va a zero, e tutti i fili cadere attraverso il tempo! = ciclo nullo, completando così, ma il metodo di esecuzione dell'ultima ActionList può essere ancora eseguendo l'ultimo filo.

La domanda è, è la loro comunque di rilevare se quel metodo ha ancora un thread in esecuzione di esso, come forse utilizzando un semaforo o un contatore con un interblocco per contare il semaforo fino all'inizio del metodo e contare giù alla fine. Quindi, se si raggiunge lo zero, li conosco la sua non filettato.

Questa è la attuazione di un metodo destroy sull'interfaccia, di chiuderlo prima di chiamare smaltire.

È stato utile?

Soluzione

Se si avvia un thread come questo:

System.Threading.Thread mythread = new System.Threading.Thread();
mythread.Start();

È possibile controllare:

mythread.IsAlive()

in qualsiasi momento per determinarne lo stato.

Altri suggerimenti

Utilizza il BackgroundWorker che ha un evento completato

Utilizzare un attributo PostSharp sul metodo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top