我是WPF的新手,并且有关于WPF和Windows Forms集成的几个问题.
我有一个现有的Visual C#Windows窗体应用程序.我想将它与WPF窗口集成,可以通过单击按钮显示.这是不可能的,因为WPF期望调用线程是一个STAThread,默认情况下WinForm假定该线程是一个MTAThread.我尝试使用公寓状态STAThread生成一个新线程来调用WPF UI,但这不起作用.我尝试使用Dispatcher.BeginInvoke方法和后台工作程序,但没有一个解决了这个问题.
1)我们可以调用WPF窗口/控件而不将Main标记为STAThread吗?如果有可能,有人可以指出我正确的方向吗?2)如果实现此目的的唯一方法是使主线程成为STAThread,那么对应用程序的一般性能/响应性是否会产生任何影响.
提前致谢.
我认为最简单的解决方案是让你的WinForms线程在STA中执行.拥有一个STA线程winforms应用程序没有任何问题(实际上它通常是默认值).
您可以通过将以下行添加到程序的main方法来解决此问题:
[STAThreadAttribute] static void Main(string[] args)