GetCurrentProcessMemoryUsage method creates a new Process object on every method call:
public ulong GetCurrentProcessMemoryUsage()
{
using Process process = Process.GetCurrentProcess();
return (ulong)process.WorkingSet64;
}
Instead, it could have created it once and then reusing it for the application lifetime. This should improve performance.