ArrayList ProcessList = new ArrayList();
ProcessList.Add(new Process());
((Process)ProcessList[ProcessList.Count-1]).StartInfo.FileName = "myexecutable.exe";
((Process)ProcessList[ProcessList.Count- 1]).StartInfo.RedirectStandardOutput = true;
((Process)ProcessList[ProcessList.Count-1]).StartInfo.CreateNoWindow = true;
((Process)ProcessList[ProcessList.Count-1]).EnableRaisingEvents = true;
((Process)ProcessList[ProcessList.Count-1]).StartInfo.UseShellExecute = false;
((Process)ProcessList[ProcessList.Count-1]).Exited += new EventHandler(Process_exited);
((Process)ProcessList[ProcessList.Count-1]).Start();
//This is only if you want a process exited handler, remember, you _have_ to set .EnableRaisingEvents to true in order for this to work
private void Process_exited(object sender, System.EventArgs ea)
{
//Any processesing you want here
}