Bei einer Offline Applikation hat man immer das Problem, man muss eine Oberfläche bereitstellen, welche immer reagiert und im besten Fall nicht einfriert.

Der EPLAN Prozess, braucht ziemlich lang zum hochfahren, darum will man den auch auslagern. Damit dieser aber in einem anderen Thread laufen kann ist folgender Code notwendig:

Thread newThread = new Thread(ThreadMethod);
newThread.SetApartmentState(ApartmentState.STA);
newThread.Start();

In der ThreadMethod()  kann dann EPLAN gestartet werden. Ich hatte es erst mit dem BackgroundWorker probiert, leider ist dieser MTA und somit nicht nutzbar.