<p>How do I suspend a whole process (like the Process Explorer does when I click Suspend) in C#.</p>

<p>I'm starting the Process with Process.Start, and on a certain event, I want to suspend the process to be able to do some investigation on a "snapshot" of it.</p>

See this CodeProject article for the win32 basics :
http://www.codeproject.com/KB/threads/pausep.aspx
.  This sample code makes use of the ToolHelp32 library from the SDK, so I would recommend turning this sample code into an unmanaged C++/CLI library with a simple interface like "SuspendProcess(uint processID).
Process.Start will return you a Process object, from which you can get the process id, and then pass this to your new library based on the above.
Dave