2009-08-06 13 views
10

Ich habe eine WPF-Anwendung, die manchmal für eine halbe Minute einfriert und dann funktioniert. Ich denke, diese Anwendung zu profilieren. Kennt jemand eine gute Anleitung zum Profilieren von WPF-Anwendungen? Oder hat jemand eine Idee, einen Weg zu finden, wenn es friert? Das Einfrieren ist nicht konsistent und bezieht sich nicht auf ein NutzungsmusterProfiling WPF-Anwendung

Vielen Dank für Ihre Hilfe.

Ghassan

Antwort

10

Es ist ein Toolset in den Windows SDK WPFPerf genannt - es hat eine Reihe von Werkzeugen (wie Perforator), die spezifisch mit WPF Debuggen und Profilieren helfen. Here's a quick guide auf diesen Tools.

Für allgemeine .net Profilerstellung, RedGate Ants oder JetBrains' dotTrace sind großartig. Es gibt auch einige profiling included in Visual Studio 2005/2008 (und bessere in 2010?).

+0

Gemäß diesem Link (http://msdn.microsoft.com/en-us/library/ms182372%28v=vs.100%29.aspx) ist VS2010 Performance Profiler nicht in allen Editionen verfügbar. – kevinarpe

+0

@PhilipRieck: Was ist die aktuelle Alternative für die WPF Performance Suite zum Profiling von .NET 4.5-Apps? Ich würde mich sehr freuen, wenn Sie sich meine Frage [hier] (http://stackoverflow.com/q/33468572/3345644) ansehen. –

1

Profiling ist Overkill. Während dieser halben Minute wartet es auf etwas. Just pause it and see what it's waiting for.

+0

Während ich zustimme, dass dies eine gute Technik im Allgemeinen zu verwenden ist, stimme ich nicht überein, dass es immer durch eine Endlosschleife verursacht wird. Es könnte blockieren, dass einige API auf eine Ressource warten. Es gibt viele Gründe, warum Ihre Benutzeroberfläche eingefroren werden könnte, die nicht mit einer Endlosschleife zusammenhängen. Ich sage das nur, um sicherzugehen, dass niemand eine wilde Jagd macht. –

+0

@Anderson: OK, ich formulierte es neu, um den "fast Endlosschleife" -Teil herauszunehmen. Das Prinzip ist das gleiche. Während dieser halben Minute ist es in einem Zustand, in dem es auf etwas wartet, nach dem es nützliche Arbeit wieder aufnehmen wird. Pausiere es einfach und du wirst sehen, worauf es wartet, ob es sich um eine Low-Level-Schleife handelt, um eine Ressource zu erhalten, was auch immer. Die Leute denken, das ist hart und das ist es nicht. –