Contexte: J'ai écrit une bibliothèque de journalisation générique dans .NET 3.5. Fondamentalement, le développeur doit appeler la méthode Begin() au début de la méthode et la méthode End() à la fin de la méthode. Ces méthodes ne prennent pas de paramètre - la bibliothèque utilise la trace de pile pour déterminer d'où elle vient. La bibliothèque possède une collection qui garde la trace de la pile d'appels et écrit le temps écoulé de chaque méthode.Valeur unique dans StackTrace?
Cela fonctionne très bien et j'en suis content. Mais maintenant nous voulons l'ajouter au serveur. Maintenant, nous voulons l'ajouter au serveur. Lorsque plusieurs utilisateurs sont sur le système, il existe un seul fichier journal et les traces de la pile sont regroupées. Il est impossible de dire quel fil fait quoi.
Ma question est la suivante:
est-il un moyen de récupérer une valeur unique de la classe StackTrace ou un StackFrame indivdual? Pourquoi ne pas utiliser la réflexion? J'aimerais pouvoir créer un fichier séparé pour chaque utilisateur. À tout le moins, j'aimerais pouvoir marquer chaque ligne avec la valeur unique afin que nous puissions filtrer le fichier par cette valeur lors de l'examen des traces.
Nous utilisons WCF TcpBinding comme notre protocole de communication côté serveur, si cela aide. Je suis à la recherche d'un identifiant de thread, d'un code de hachage, d'une adresse, de quelque chose permettant de distinguer l'origine de la pile d'appels.
Des idées?
Merci.
Yep - 'Thread.CurrentThread.ManagedThreadId' devrait le faire correctement. –
Cela a fonctionné pour moi. De plus, j'ai trouvé la propriété MethodBase.MethodHandle que j'utilise en combinaison avec ManagedThreadId. Merci! – msawtatn