Je crée une DLL C#, qui va être utilisée par d'autres développeurs dans WinForms. Pour certaines raisons, je veux détecter, si les méthodes de cette bibliothèque, sont appelées du thread principal (GUI) et avertir le développeur qu'il a fait une telle chose (c'est-à-dire dans le fichier journal). Existe-t-il un moyen raisonnable de détecter la méthode d'appel du thread principal? Rappelez-vous que je n'ai pas accès à l'application WinForm.Détection de l'exécution dans Main Thread dans la bibliothèque C#
7
A
Répondre
17
Une solution simple dans ce cas consiste à déclarer un contrôle statique dans l'assembly de bibliothèque créé sur le thread principal de l'interface utilisateur. Si vous voulez détecter si la bibliothèque est appelée à partir du thread principal, puis utilisez les éléments suivants
if (MyLibraryControl.InvokeRequired)
//do your thing here
2
L'option la plus simple (si vous avez une forme/contrôle à portée de main) est de vérifier InvokeRequired. En l'absence de cela, vous pouvez essayer d'utiliser SynchronizationContext
pour simuler un envoi ou un envoi, en vérifiant le fil de discussion qui se passe? L'appel de Send ou Post passera au thread de l'interface utilisateur.
Questions connexes
- 1. Bibliothèque de détection audio Bpm
- 2. Qu'est-ce qui empêche la collecte d'un thread dans C#?
- 3. Fréquence fondamentale + détection de la voix dans C#
- 4. Détection de la version COMCTL32 dans .NET
- 5. Bibliothèque de détection audio ou vidéo
- 6. Comment référencer la bibliothèque C# dans ColdFusion?
- 7. Conception de bibliothèque de classes Safe Thread
- 8. Détection de code mort dans un projet C/C++ existant
- 9. C++ classe pourquoi besoin de main?
- 10. C# Détection de la carte son
- 11. À quoi sert "string [] args" dans la classe Main?
- 12. Pourquoi main() dans java est-il vide?
- 13. utilise la bibliothèque de classes vC++ dans C#
- 14. comment puis-je faire la détection d'objet dans C# .net en utilisant opencv?
- 15. Boost :: Test - génération de Main()?
- 16. Détection de matériel (inconnu) dans .NET
- 17. Efficacité de la détection Palindrome
- 18. simple Asynchronous bibliothèque de requête HTTP multi-thread pour
- 19. C# Thread in Thread: comment obtenir SynchronizationContext.Current?
- 20. Importation d'une bibliothèque de classes C# dans Visual C++
- 21. Détection EOF en C
- 22. Nettoyage de thread géré C#
- 23. Qu'est-ce que « ne peut convertir pointeur « this » de « main const » à « main & » signifie? (C++)
- 24. La bibliothèque prévoit C++ 0x?
- 25. Bibliothèque pour la reconnaissance d'image dans Obj-C?
- 26. Authentification par proxy dans la bibliothèque POCO Net C++
- 27. Initialisation d'un vecteur avant main() en C++
- 28. C Comportement de la bibliothèque cliente MySQL
- 29. Autorisations de thread dans ASP.NET
- 30. constante C++ dans la bibliothèque; ne fonctionne pas
Ceci devrait être marqué comme la bonne réponse à la question. –