문제

저는 WPF에 대한 초보자이며 WPF 및 Windows Forms 통합에 대한 몇 가지 질문이 있습니다.

기존 Visual C# Windows Forms 응용 프로그램이 있습니다. 버튼 클릭에 표시 할 수있는 WPF 창과 통합하고 싶습니다. WPF가 호출 스레드가 stathread라고 기대하고 기본적으로 Winform은 스레드가 mtathread라고 가정하기 때문에 불가능했습니다. 나는 WPF UI를 호출하기 위해 Stathread의 아파트 상태로 새로운 스레드를 산란했지만 작동하지 않았습니다. Dispatcher.BeginInvoke 메소드와 배경 작업자도 사용해 보았지만 그 중 어느 것도 문제를 해결하지 못했습니다.

1) 메인을 Stathread로 표시하지 않고 WPF 창/컨트롤을 호출 할 수 있습니까? 가능하다면 누구든지 나를 적절한 방향으로 가리킬 수 있습니까? 2) 이것을 달성하는 유일한 방법은 메인 스레드를 stathread로 만드는 것입니다. 응용 프로그램의 일반적인 성능/응답성에 영향을 미칩니다.

미리 감사드립니다.

도움이 되었습니까?

해결책

가장 간단한 솔루션은 STA에서 WinForms 스레드를 실행하도록하는 것입니다. STA Thread Winforms 앱을 갖는 데 아무런 문제가 없습니다 (실제로는 기본값입니다).

프로그램의 주요 방법에 다음 줄을 추가 하여이 문제를 해결할 수 있습니다.

[STAThreadAttribute]
static void Main(string[] args)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top