C# Console项目调用WPF DLL显示窗口

本文主要介绍如何在C# Console项目中,调用WPF DLL,并进行窗口的显示。

由于,C# Console项目为非UI线程,因此调用WPF DLL窗口显示方法时,会报错。

线程模式分为STA(Single Threaded Apartment) 单线程单元 和 MTA 多线程单元(Multi-Threaded Apartment)。任何一个WPF程序,Main方法前必须有一个[STAThread]特性,否则编译会失败。这个特性用来申明该应用程序的初始线程模型为STA,以便和COM兼容。STA是.NET之前,旧的COM年代的词汇。

因此需要将线程设置为STA模式。

     Thread td = new Thread(()=> {
                frmLog fm = new frmLog();
                fm.ShowDialog();
            });
            // 将当前线程设置为单个线程单元(STA)模式方可进行 OLE 调用。
            td.TrySetApartmentState(ApartmentState.STA);<<~~~~~~~~~~~~~~~~~~~~加上这句话就可以解决问题了
            // 设置为后台线程
            td.IsBackground = true;
            // 开启线程
            td.Start();

你可能感兴趣的:(工作总结,c#,wpf,C#,Console项目,调用,WPF DLL,窗口显示)