First off, add your handlers before
you call Start on the process - or otherwise, you will lose any data the app generates before you add the handlers.
Second, the DataReceived events are always handled on a separate thread unless you set the Process.SynchronizingObject Property (System.Diagnostics) | Microsoft Docs
] which synchronises data onto the UI thread for you.
Be aware that the OutputDataReceived event only works in complete lines.