Hallo, ich habe ein Meßgerät. Das wird entweder "direkt" über das UI bedient, oder über eine Schnittstelle von "aussen". Für die Fernsteuerung habe ich ein WPF - Dialog, der (die z. B. serielle) Kommunikation übernimmt und mit der Hauptanwendung per Events kommunizieren soll.
Mein Problem: Damit sich Meßgerät und Fernsteuerung nicht gegenseitig blockieren möchte ich die Fernsteuerung in einem eigenen Thread starten. Verkürzt sieht das ganze in etwa so aus:
Wenn ich den WPF - Dialog mit .ShowDialog() aufrufe und nicht auf das Ende warte, also .Join() entferne, bleibt mein Fenster offen ... Das war es dann erst mal.
tut mir leid schreiben zu müssen, aber das ist ein ganz falscher Ansatz. Vermische nicht die UI mit der Logik, sondern trenne diese. Für WPF bietet sich hierzu zB MVVM an. Vom ViewModel aus kannst du dann auch die anderen Daten asynchron bzw. mit einem anderen Thread holen.
Da alle UI-Elemente im Main-Thread laufen sollten (bis auf wenige Ausnahmen) ist es sowieso nicht sinnvoll einen neuen Thread zu erzeugen. Mehr dazu steht in Threading Model.
Schau dir beide Links mal an und überdenke den Entwurf deiner Anwendung.
Diese "RemoteControl" wird eine eigenständige, eventbasierte Komponente, die in mehreren Applikationen verwendet werden soll. Die Kommunikation erfolgt ausschließlich über 3-4 Events. Und Hauptanforderung: Egal was in der Hauptanwendung gerade passiert, die Kommunikation muss schnell antworten können.
Aber ich werde mir auf jeden Fall die Inhalte der Links nochmal durchlesen. Für den Rest kommt MVVM durchaus zum tragen.
Das war es dann erst mal.