Question: I want to control cmd.exe from winforms.
I DO NOT mean every command in a single process, with startupinfo, and then stop.
I mean for example start
You don't need to use cmd.exe for this, you can call the commands directly with Process.Start(). If you redirect StandardInput and StandardOutput you can control the process.
I have written an example as a response to another question.
Edit
I don't have a complete example for it, but you could listen to StandardOutput with the Process.OutputDataReceived event if you don't want to wait synchronously. There is an example on the MSDN page.