Y a-t-il un outil disponible pour profiler la conflit de thread .NET. J'ai ajouté un compteur de performance pour les threads pour un service Windows qui fonctionne lentement. Il montre environ 150 soutiens de fil. J'aimerais profiler quel domaine du code est responsable de tant de contenties de fil. Y a-t-il un outil disponible qui peut me signaler dans les blocs de code de droite. P>
3 Réponses :
Pas un profileur, mais Windbg avec l'extension SOSSX.DLL peut vous dire quelles impasses vous rencontrez. Recherchez-le ici et lisez la commande! DLK. P>
Oui je cherche quelque chose comme ça. Mais malheureusement je suis sur vs.net 2005
@Amitabh: Vous pouvez télécharger VS2010 ici: msdn.microsoft.com/en-us /vstudio/dd582936.aspx
VS2010 peut cible .NET 2.0. Il vous suffit de mettre à niveau les fichiers de projet (.csproj, .vbproj) et des solutions (.SLN). Aucune migration de code n'est nécessaire. Je ne sais pas si vous pouvez utiliser le profileur avec des projets .NET 2.0, mais cela vaut la peine que je suppose.
J'ai rencontré le même problème avec un projet Visual Studio 2008, donc je n'ai donc pas été en mesure d'utiliser le profileur de fil de fil de fil de VS2010. Au lieu de cela, j'ai écrit une classe de diagnostic, Timedmonitor , qui suit le montant de temps passé à attendre les serrures.
Pour l'utiliser, vous remplaceriez: P> avec: p> Si vous n'utilisez qu'un petit nombre de serrures simples (c'est-à-dire avec moniteur.enter ou le mot clé de verrouillage), remplacez-les avec TimeDMonitor et la journalisation de la sortie peut aider à identifier le verrou en attente le plus de temps. Toutefois, si vous utilisez des serrures gérées plus complexes (par exemple, ReaderWriterLock) ou une synchronisation native (par exemple, ManualReseTevent), elle ne sera pas utile car elle ne la suive pas. P> P>