Inputbox in anderem Thread aufrufen



  • Hallo Forum,

    ich schreibe ein Addon zu einer anderen Anwendung.
    In dieser Anwendung gibt es einen GUI Thread und weitere MTA Threads. Mein Addon reagiert auf Events. Manche Events werden mit der ManagedThreadId der GUI gefeuert (Thread Typ STA) und andere Events haben eine ganz andere ManagedThreadId und sind vom Typ MTA. In einem solchen MTA Event möchte ich nun den User ein paar Fragen per Dialog stellen. Die GUI friert nun ein.

    Wie kann ich den Dialog im Thread der GUI starten? Der Dialog gehört zu der Anwendung, dort gibt es kein BeginInvoke() oder InvokeRequired().

    Ich könnte mir ein WindowsControl im GUI Thread erstellen lassen, dieses speichern und dann das dortige BeginInvoke benutzen. Das wäre aber unschön anzusehen. Gibt es eine einfachere Möglichkeit?

    Vielen Dank

    Martin



  • Servus

    Am einfachsten ist es, wenn du die MainForm damit beauftragst. Hier kommt es nun nur drauf an, mit was du arbeitest.

    Mit WinForm findest du die MainForm im ApplicationContext: MSDN. Dort kannst du dann via BeginInvoke() die Abfrage abschicken.

    Bei WPF findest du es unter "Application.Current.MainWindow" (bzw. alle geöffnete unter "Application.Current.Windows"). Dort kannst du dann mit dem Dispatcher am Window arbeiten.

    MfG Marco


Anmelden zum Antworten