Одна из хитростей, которые иногда применялись вредоносными программами в прошлые дни, заключалась в том, чтобы иметь два процесса, каждый из которых отслеживает запущенные в данный момент процессы, и перезапускать другой процесс, если он завершается.
Пространство имен System.Diagnostics имеет классы, которые могут помочь, в частности, «Process».
Например
static Process[] Process.GetProcesses()
возвращает список всех запущенных в данный момент процессов.
Если вашего другого процесса нет в этом списке, просто перезапустите его, например,
Process.Start()