Aucun des exemples sur TraceSource J'ai trouvé des adresses multithreading. Je crée une nouvelle instance d'une classe (SyncService) pour répondre à une requête entrante. Quand il y a beaucoup d'activité, il y a plusieurs threads qui ont besoin d'utiliser TraceSource pour enregistrer les activités. Comment dois-je utiliser cette classe pour la journalisation avec la performance et la sécurité des threads à l'esprit? J'ai quelques optons à l'esprit:comment instancier C# TraceSources pour consigner (multithread) l'application Web ASP.NET 2.0 (asmx ws)?
private static TraceSource _source; static SyncService() { _source = new TraceSource("mySrc"); }
dans le cas où la sécurité du fil est un problème. Il y a beaucoup de journalisation, donc je ne veux pas faire de verrous partout pour garder l'accès à la méthode TraceEvent. Qu'en est-il de supprimer les deux static-keywords? Y a-t-il beaucoup de frais généraux lorsque toutes les demandes se connectent à partir de leur propre TraceSource? Y a-t-il une meilleure solution que ces 2? états msdn: "Tous les membres publics (partagés dans Visual Basic) statique de ce type sont thread-safe.Tous les membres d'instance ne sont pas garantis être thread-safe." Que devrais-je penser à ce sujet?
merci! Je prévois d'utiliser uniquement TextWriterTraceListener. ce n'est pas sûr pour les threads. Je ne comprends pas pourquoi les auditeurs doivent être synchronisés. dans http://msdn.microsoft.com/en-us/library/ms228993.aspx vous ajoutez juste des écouteurs et ils apparaissent comme passifs (aucune méthode n'est appelée), toute l'action est dans TraceSource. Pourquoi n'avons-nous pas besoin de contrôler l'accès? c'est-à-dire lors de l'appel de _source.TraceEvent à partir de plusieurs threads. msdn indique clairement qu'il n'est pas sécurisé. –
Si vous regardez l'implémentation de TraceEvent dans par exemple Reflector, il est clair que le verrouillage est implémenté. Mais si un TraceListener dit que c'est sûr, mais en réalité ce n'est pas le cas, alors l'affirmation "pas garanti pour être thread safe" est correcte. –