Frage

Ich bin ein Neuling auf WPF und habe ein paar Fragen zu WPF und Windows Forms Integration.

Ich habe eine vorhandene Visual C # Windows Forms-Anwendung. Ich möchte es mit einem WPF-Fenster integrieren, die auf eine Schaltfläche klicken angezeigt werden kann. Dies war nicht möglich, da WPF der aufrufende Thread erwartet ein STAThread zu sein und standardmäßig WinForm geht davon aus, dass der Faden eine MTAThread ist. Ich habe versucht, einen neuen Thread mit einem Apartmentzustand STAThread Laichen die WPF UI für den Aufruf aber das hat nicht funktioniert. Ich versuchte, die Dispatcher.BeginInvoke Methode und Hintergrund Arbeitnehmer mit als gut, aber keiner von ihnen das Problem gelöst.

1) Können wir einen Aufruf an WPF-Fenster / Kontrolle, ohne die Haupt als STAThread Kennzeichnung? Wenn es möglich ist, Kann mir jemand bitte auf eine richtige Richtung? 2) Wenn der einzige Weg, dies zu tun ist durch das Haupt macht Thread einen STAThread, wird es keine Auswirkungen auf die allgemeine Leistung / Ansprechbarkeit der Anwendung.

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Ich denke, die einfachste Lösung ist auf Ihren WinForms-Thread in einem STA ausführen zu machen. Es ist nichts falsch mit mit einem STA-Thread winforms app (es ist in der Tat oft die Standardeinstellung).

Sie können dieses Problem beheben, indem Sie die folgende Zeile in die Hauptmethode des Programms hinzu:

[STAThreadAttribute]
static void Main(string[] args)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top