private static void InvokeNotepadAsync(string file, ManualResetEvent whenDone) { ThreadPool.QueueUserWorkItem(_ => { try { Process process = Process.Start(@"C:\Windows\notepad.exe", file); process.WaitForExit(); whenDone.Set(); } catch { } }); }