A centralized progress hub for Windows. Instead of every application spawning its own dialog, AdiProgress provides a single, consolidated window for all active tasks. It dynamically scales and adds scrollbars as more processes report in.
- Shared UI: One window for multiple independent apps (categorized by name).
- IPC via Named Pipes: Fast, version-independent communication between .NET 4.8 and .NET 8+.
- Self-Bootstrapping: The client starts the server automatically if it’s not running.
- JSON Theming: UI appearance is easily customizable via
appsettings.json.
- Server: Standalone WPF application (any .NET version).
- Clients: Lightweight Library supporting .NET 4.8 to .NET 10.
- Communication: Named Pipes (allows cross-version compatibility).
- Deployment: No Service required. Client launches the Server
.exeon demand. - Customization: Appearance is configured via JSON (colors, fonts, etc.).
//Set the server path
AdiProgressClient.AdiProgressClient.ServerPath = @"c:\Tools\AdiProgress.exe";using AdiProgressClient; // Add this to the top of your file
// Run a sync progress
using (var progress = new AdiProgress(name, allowCancel: true, parentHandle: Handle))
{
for (int i = 0; i <= 100; i += 10)
{
progress.UpdateProgressSync(i, 100, $"Working on something important: {i}%");
if (progress.IsCancelled) return;
Thread.Sleep(200);
}
}// Run a sync marquee progress
using (var progress = new AdiProgress(name, allowCancel: true, parentHandle: Handle))
{
progress.ShowPleaseWaitSync("Please wait...");
Thread.Sleep(5000);
}// Run an async progress with a 500ms delay before showing UI
using (var progress = new AdiProgress(name, allowCancel: true, showAfterMs: 500))
{
for (int i = 0; i <= 100; i += 10)
{
await progress.UpdateProgressAsync(i, 100, $"Working async: {i}%");
await Task.Delay(200);
}
}To see how to integrate the AdiProgressbar, check out the TestClient example which demonstrates multi-category reporting.
Note
Architecture & IPC Performance During development, an external IPC-based (Named Pipes) progress system was tested. For high-speed file searching, cross-process communication can feel "heavy" or introduce latency due to pipe congestion. The project currently uses a local progress bar for an "instant-start" feel. If you have a high-performance solution for externalized progress reporting, feel free to submit a PR or open an issue!

