Только что попробовал на Win10 - работает. Виртуалку с моно я недавно грохнул )
Вы почти угадали :) Есть два (известных мне) способа.
1. Нужно использовать
System.Diagnostics.Process.Start(@"C:\windows\system32\notepad.exe");
Этот способ, тогда дочерний процесс создается с флагом
HasExited. Грубо говоря, даете понять что создавший его процесс умер еще до создания и система тогда создаст его самого по себе.
2. Использовать
WaitForExit// Start the child process.
Process p = new Process();
// Redirect the error stream of the child process.
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.FileName = @"C:\windows\system32\notepad.exe";
p.Start();
// Do not wait for the child process to exit before
// reading to the end of its redirected error stream.
// p.WaitForExit();
// Read the error stream first and then wait.
//string error = p.StandardError.ReadToEnd();
p.WaitForExit();
Мы просто говорим чайлду что мол жди закрытия парента бесконечно.
В первом случае консольное приложение закрывается само, оставляя открытым блокнот. Во втором - остается открытым, но при закрытии блокнот все равно остается открытым.
Как оно поведет себя на моно не знаю )) Удачи )