The documentation on the StandardError property (
http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standarderror.aspx) says that ReadToEnd will not complete until the process writes to its error stream or closes it. This can create a deadlock if it writes to its output stream first. See the paragraphs just prior to the examples section. It also details how to use the asynchronous methods like BeginErrorReadLine to avoid the deadlock.
You will probably want to use the WaitForExit method (
http://msdn.microsoft.com/en-us/library/ty0d8k56.aspx) to have the process finish before you continue instead of waiting the arbitrary 7 seconds. The WaitForExit call will need to be after reading the StandardError and StandardOutput streams or using their asynchronous equivalents.