I agree with Tom. In addition, to check the processes while performing Thread.Sleep, check the running processes. Something like:
bool found = 0;
while (!found)
{
foreach (Process clsProcess in Process.GetProcesses())
if (clsProcess.Name == Name)
found = true;
Thread.CurrentThread.Sleep(1000);
}