J'ai un thread en cours d'exécution en arrière-plan. Comment puis-je envoyer des messages de mon fil principal? Le seul message que je dois envoyer est 'aller'/'réveiller'Passer un msg à un autre thread dans C#
Répondre
Si votre fil ne fait rien tant que vous ne le voulez pas, alors pourquoi le démarrer jusqu'à ce que vous le vouliez?
Si vous souhaitez exécuter votre thread d'arrière-plan, puis suspendre/attendre un événement, puis continuer, une méthode simple consiste à utiliser la famille de classes EventWaitHandle
.
Un exemple simple (tiré de this question). Les deux fils doivent avoir accès à ce qui suit:
private ManualResetEvent _workerWait = new ManualResetEvent(false);
Ensuite, dans votre thread de travail:
_workerWait.WaitOne();
Maintenant, il va bloquer jusqu'à ce que vos principaux appels de fil:
_workerWait.Set()
Pour une une discussion plus complète de vos options et quelques exemples, voir: http://www.albahari.com/threading/
Utilisez la classe System.Threading.Semaphore.
Si vous parlez de se réveiller un fil de couchage - Thread.Suspend() (attente) - Thread.Resume() (aller/réveil)
utilisation AutoresetEvent ou ManualResetEvent
- 1. Différer BufferedWriter.write à un autre thread
- 2. Multithreading in C#: Comment passer un nom de fonction à une autre fonction pour démarrer un nouveau thread?
- 3. C# Passer des valeurs à un autre formulaire
- 4. Écrire dans un TextBox à partir d'un autre thread?
- 5. Comment passer des paramètres à un objet Thread?
- 6. Passer un paramètre à System.EventHandler dans C#
- 7. Ajouter des contrôles à WinForms dynamiquement dans un autre thread
- 8. Comment déléguer un appel de méthode à un autre thread?
- 9. Débloquer un thread d'un autre processus, en C++
- 10. Dans Emacs, comment passer à un autre tampon?
- 11. J'ai besoin d'aide pour obtenir des informations sur un thread d'interface utilisateur et un autre thread dans C#
- 12. Passer le résultat d'un fichier batch à un autre?
- 13. comment faire passer un tableau d'objet à un autre type de tableau d'objets en C#?
- 14. Passer une requête à un autre contrôleur sur HandleUnknownAction
- 15. Passer une valeur d'un MXML à un autre
- 16. Settings.settings - Comment passer d'un environnement à un autre?
- 17. Comment passer un champ caché d'une page à une autre?
- 18. Modification des propriétés DataGridViewRow dans un autre thread
- 19. Passer des valeurs d'un contrôle Usercontrol à un autre UserControl!
- 20. Comment passer une variable d'un domaine d'application à un autre
- 21. Passer des exceptions à un écran d'erreur dans ASP.net/C#
- 22. Comment remplir en toute sécurité un tableau depuis un thread en le lisant dans un autre en Objective-C?
- 23. Passer à une autre vue de tableview avec un controleur de navigation placé dans un tabbarcontroller
- 24. comment passer un tableau de valeurs d'un composant mxml à un autre dans Flex?
- 25. Accès à BackgroundWorkerThread dans un thread
- 26. Passer un appel de procédure stockée d'un contexte de données LINQ à une autre méthode. C#
- 27. Le compilateur C# effectuera-t-il plusieurs conversions implicites pour passer d'un type à un autre?
- 28. C# WinForm; Passer un groupe de contrôles à une autre classe
- 29. C++ sql passer un entier à la chaîne sql
- 30. Comment passer à un autre onglet de UITabBar sans toucher à un onglet?