Existe-t-il un moyen de faire en sorte que ThreadPool termine son travail, lorsque le programme se ferme? Quand j'utilisais un Thread normal, je l'ai simplement mis en t.Join sur l'événement FormClosing .. mais ThreadPool ne semble pas avoir de méthode Join?ThreadPool Terminer Travail, lors de la fermeture du programme
0
A
Répondre
0
Je pense que je pourrais avoir résolu ..
Imports System.Threading
Module Module1
Sub Main()
Dim t As New Tool
t.WaitToJoin()
Console.WriteLine("Done")
t.WaitToJoin()
Console.WriteLine("Done")
t.WaitToJoin()
Console.WriteLine("Done")
t.WaitToJoin()
Console.WriteLine("Done")
t.Update()
t.WaitToJoin()
Console.WriteLine("Done")
t.Update()
Thread.Sleep(1500)
t.Update()
t.WaitToJoin()
Console.WriteLine("Done")
t.Update()
Thread.Sleep(1500)
t.Update()
Thread.Sleep(1500)
t.Update()
Thread.Sleep(5500)
t.Update()
Thread.Sleep(10000)
t.Update()
t.WaitToJoin()
Console.WriteLine("Done")
End Sub
End Module
Public Class Tool
'Thread Stuff
Private threads As Integer = 0
Private threadsdone As AutoResetEvent = New AutoResetEvent(False)
Public Sub WaitToJoin()
If Interlocked.Read(threads) > 0 Then
threadsdone.WaitOne(New TimeSpan(0, 0, 30)) ' just to be sure not to lock forever, by some wierd reason, a timeout on 30 sec is added
End If
End Sub
Public Sub Update()
Threading.ThreadPool.QueueUserWorkItem(New Threading.WaitCallback(AddressOf HardWork), "Doing dome hard work...")
End Sub
Public Sub HardWork(ByVal state As Object)
Dim num As Integer = Interlocked.Increment(threads)
Console.WriteLine(num & " - " & state)
Thread.Sleep(10000)
If Interlocked.Decrement(threads) = 0 Then
threadsdone.Set()
End If
End Sub
End Class
1
Je ne pense pas que vous pouvez faire attendre Threadpool. Que diriez-vous d'utiliser un Task au lieu de threadpool? Quelque chose à l'effet comme le code suivant. Vous pouvez vérifier l'exemple complet here pour une meilleure compréhension
Dim taskA = Task.Factory.StartNew(Sub() DoSomeWork(10000000))
taskA.Wait()
Console.WriteLine("taskA has completed.")
Questions connexes
- 1. Exception lors de la fermeture du programme Tkinter Python
- 2. Exécution d'une méthode lors de la fermeture du programme?
- 3. C# à la fermeture du programme
- 4. Exécution du programme sans terminer
- 5. fermeture inattendue du programme
- 6. Comment trouver notre thread de travail ThreadPool?
- 7. Form_Activated désorganise la fermeture du programme
- 8. Redémarrer l'application après la fermeture du programme
- 9. Terminer NSURLRequest lors du lancement de l'application
- 10. Lancer le processus à partir du thread de travail Threadpool (et attendre si nécessaire)
- 11. Contrôle de travail de Bash - Pouvez-vous terminer la deuxième commande de la liste sans la terminer en premier?
- 12. Sauvegarde de plusieurs EditText après la fermeture du programme
- 13. C# sous forme de fermeture à la fin du programme
- 14. Java - Fermeture du socket lors du rechargement de la classe
- 15. Open Source threadpool lib
- 16. Déboguer Threadpool en C#
- 17. Terminer un programme avec la touche Entrée
- 18. Sauvegarde des données de travail du programme
- 19. splashcreen android étrange lors de la fermeture
- 20. Problème lors de la fermeture des sockets
- 21. Comment fermer la session NHibenrate lors de l'utilisation de ThreadPool?
- 22. Assurer la fermeture de l'authentification des formulaires lors de la fermeture du navigateur
- 23. Problème de sélection lors de la fermeture du socket
- 24. État du curseur invalide lors de la tentative de fermeture
- 25. Comment la fermeture et le travail du constructeur du point de vue du moteur js
- 26. Problème lors de la réexécution du programme
- 27. timeSeries aligner ne pas terminer son travail
- 28. Python Unittest: Ouvrir et attendre la fermeture du programme
- 29. des idées pourquoi cela pourrait être la fermeture du programme?
- 30. Configuration de la jetée. ThreadPool
problème principal est bien que je dois savoir quand tous mes tâches sont faites, comme 1 la tâche pourrait durer plus longtemps que l'autre .. si je ne fais que suivre la dernière tâche, je pourrais superviser l'un de celui qui prend plus de temps – Droa