public static void Pause(this Process process) { foreach (ProcessThread thread in process.Threads) { var handle = Pinvoke.OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)thread.Id); if (handle == IntPtr.Zero) { break; } Pinvoke.SuspendThread(handle); Pinvoke.CloseHandle(handle); } }