# PerformanceCounter

The Wisej.NET `PerformanceCounter` component enables reading predefined or custom performance counters and publishing data to custom counters through Windows Performance Monitor.

{% hint style="info" %}
The `PerformanceCounter` implements `IDisposable`. Always dispose of it either:

* Directly: Call `Dispose()` in a try/catch block
* Indirectly: Use language constructs like `using` (C#) or `Using` (VB)
  {% endhint %}

## Features

### Counter Types

Two main usage scenarios:

* Read existing predefined or custom counters
* Publish (write) performance data to custom counters

### Predefined Counters

Access numerous predefined counters through Windows Performance Monitor's [Add Counters dialog box](https://go.microsoft.com/fwlink/p/?LinkId=257854).

{% hint style="info" %}
For detailed information about performance monitoring, see:

* [.NET Framework Performance Counters](https://docs.microsoft.com/en-us/dotnet/framework/debug-trace-profile/performance-counters)
* [System.Diagnostics.PerformanceCounter on MSDN](https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.performancecounter?view=net-5.0)
* [Using Objects that Implement IDisposable](https://docs.microsoft.com/en-us/dotnet/api/system.idisposable?view=net-5.0)
  {% endhint %}
