Click here to Skip to main content
12,816,320 members (30,682 online)
Click here to Skip to main content
Add your own
alternative version


50 bookmarked
Posted 26 Jul 2006

Application dashboard for tracking .NET application performance

, 26 Jul 2006 CPOL
Rate this:
Please Sign up or sign in to vote.
Provides graphical feedback on the performance (memory usage, garbage collection, threads, exceptions, loaded classes) of a .NET application.

Sample Image - MemoryDashboard.jpg


When a .NET application is running, it registers and updates a large number of performance counters which you can use to monitor the way your application is running - for example, how many threads is it using, what its memory usage is, how long it spends doing garbage collection, and so on.

You can read these properties using the .NET Framework built-in PerformaceCounter class. The attached code does just that and presents the results in a graphical format which you can have open and watching as you test your application - this can show up performance issues before the users get to see the problems.

How to use

To use the application, start your test application running, then fire up the application dashboard. Then select the menu File .. Settings and select your application from the drop down list of running .NET applications. You can also adjust the maximum and minimum values of each gauge so that it better matches your application.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Duncan Edwards Jones
Software Developer (Senior)
Ireland Ireland
C# / SQL Server developer
Microsoft MVP 2006, 2007
Visual Basic .NET

You may also be interested in...


Comments and Discussions

GeneralSome comments.... Pin
Juergen Posny27-Jul-06 22:56
memberJuergen Posny27-Jul-06 22:56 

I walked through your source, and I have some comments / questions for you:

1. Every time, the user changes settings, new instnces of the counters are made, and the old ones are unhandled in memory. I think, you trust the GC, but in this case, this can cause lots of problems, when your app is running longer time (PerformanceCounters are dealing with unmanaged code, and when garbage collection fails, you produce memory leaks), so it would be nice to 'Dispose' the counters correctly, when leaving the app.
Then you only should have one instance of the counters, and when changing settings (instance name), set the property 'InstanceName' of the counters.

1. Why do uou use public constants for the categories / names. When using one instance of the counters, there are no constants needed, just call the constructor once with the names....

GeneralRe: Some comments.... [modified] Pin
Duncan Edwards Jones27-Jul-06 23:03
memberDuncan Edwards Jones27-Jul-06 23:03 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.170308.1 | Last Updated 27 Jul 2006
Article Copyright 2006 by Duncan Edwards Jones
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid