proceso de captura stdout y stderr en el orden correcto

Lance un proceso desde C # de la siguiente manera:

public bool Execute()
{
    ProcessStartInfo startInfo = new ProcessStartInfo();

    startInfo.Arguments =  "the command";
    startInfo.FileName = "C:\\MyApp.exe";

    startInfo.UseShellExecute = false;
    startInfo.RedirectStandardOutput = true;
    startInfo.RedirectStandardError = true;

    Log.LogMessage("{0} {1}", startInfo.FileName, startInfo.Arguments);

    using (Process myProcess = Process.Start(startInfo))
    {
        StringBuilder output = new StringBuilder();
        myProcess.OutputDataReceived += delegate(object sender, DataReceivedEventArgs e)
        {
            Log.LogMessage(Thread.CurrentThread.ManagedThreadId.ToString() + e.Data);
        };
        myProcess.ErrorDataReceived += delegate(object sender, DataReceivedEventArgs e)
        {
            Log.LogError(Thread.CurrentThread.ManagedThreadId.ToString() +  " " + e.Data);            
        };

        myProcess.BeginErrorReadLine();
        myProcess.BeginOutputReadLine();

        myProcess.WaitForExit();

    }

    return false;
}

Pero esto tiene un problema ... si la aplicación en cuestión escribe en std out y std err en este orden:

std out: msg 1
std err: msg 2
std out: msg 3

Entonces la salida que veo de los registros es:

msg 2
msg 1
msg 3

Esto parece ser porque los controladores de eventos se ejecutan en otro hilo. Entonces, mi pregunta es ¿cómo se puede mantener el orden del proceso de escritura a std err y std out?

Pensé en usar una marca de tiempo pero no creo que esto funcione debido a la naturaleza preventiva de los hilos.

Actualización: Se confirmó que el uso de una marca de tiempo en los datos no sirve.

Actualización final: la respuesta aceptada resuelve este problema; sin embargo, tiene un inconveniente: cuando las secuencias se fusionan, no hay forma de saber en qué secuencia se escribió. Por lo tanto, si necesita la lógica de escritura al error stderr == en lugar del código de salida de la aplicación, es posible que aún esté en problemas.

Respuestas a la pregunta(2)

Su respuesta a la pregunta