Ja, wenn es wirklich zwei Prozesse sein müssen.
Wieso müssen es zwei Prozesse sein?
Möchtest Du verhindern, wenn deine Consolenapp abstürzt, dass deine
MainApp nicht auch abstürzt? Ansonsten macht es null Sinn mit zwei
Applikationen zuarbeiten, weil deine MainApplikation z.B. deine
ConsolenApplikation monitoren muss, damit es sicher läuft.
Persönlich bin ich kein Fan davon den Prozess.Output einzulesen, wenn
beide Applikationen auf dem gleichen PC sind, dann nehme ich gerne eine
NamedPipe, wenn beide Applikation auf unterschiedlichen PC's laufen,
dann nehme ich TCP Sockets.
Ich benutze gerne diesen NamedPipeWrapper.
https://github.com/acdvorak/named-pipe-wrapper
Wenn alles ein Prozess sein kann, aber du gerne die Sachen trennen
möchtest, wieso packst du deine Funktionen aus deiner ConsolenApp nicht
in eine DLL.
Du bindest dann das DLL Projekt in deine MainApp ein und erstellst dann
eine Instanz von deinem Objekt.
Ab diesen Punkt arbeite ich gerne mit Dependceny Injection
(UnityContainer), WPF + MVVM Pattern und C#.
Alles zusammen bietet Prism alles was man brauch und sogar DLLs per
Laufzeit zuladen.
https://github.com/PrismLibrary/Prism