Wir haben eine kleine Testsuite für unsere Windows Forms-UI-Rendering-Engine entwickelt, mit der Sie die Leistung messen und Speicherverluste erkennen können, während Testfälle automatisiert ausgeführt werden. Jetzt möchten wir auch nach Handle-Lecks suchen. Auf der Desktop-Plattform können wir diesen Code verwenden:Ermitteln der Anzahl der GDI-Handles und USER-Objekte
[DllImport("User32")]
private extern static int GetGuiResources(IntPtr hProcess, int uiFlags);
using (var process = Process.GetCurrentProcess())
{
var gdiHandles = GetGuiResources(process.Handle, 0);
var userHandles = GetGuiResources(process.Handle, 1);
}
Diese Methode scheint nicht in Windows Mobile verfügbar. Gibt es eine andere Möglichkeit, diese Werte programmgesteuert unter Windows Mobile/CE zu ermitteln?
Soweit ich Ihren Ansatz verstehe, würde dies erfordern, dass ich die gesamte Ressourcenbehandlung in unserer Anwendung neu schreiben, die derzeit von Windows Forms (irgendwo tief in 'Pen', 'Graphics' und' Bitmap') behandelt wird - nur für Der Grund für das Testen auf Ressourcen-Handle-Lecks. Da solche Tests normalerweise kurz vor der Veröffentlichung einer neuen Version durchgeführt werden, beobachte ich eher das Verhalten der Anwendungen mit den vorhandenen Tools. Wie auch immer, danke für deinen Vorschlag - ich schätze die Mühe. – Gene
Sicher tun Sie dies nicht vor der Bereitstellung, nein. Dies wäre jedoch ein besseres Design für Ihre Anwendung. Denk an zukünftige Releases. :) – jp2code