Dll MFC应用程序创建没有CLR依赖项的WPF控件

Dll MFC应用程序创建没有CLR依赖项的WPF控件,dll,mfc,Dll,Mfc,我想一个MFC应用程序可以创建没有CLR依赖的WPF控件。我的解决方案是创建一个带有CLR依赖项的MFC常规Dll,它调用我的WPF控件库来创建WPF控件。MFC应用程序调用此MFC常规Dll来创建wpf控件。问题在于调用代码“HwndSource^source=gcnew HwndSource(0,0,0,0,0,name,IntPtr::Zero);”时,应用程序会抛出一个异常“调用线程必须是STA,因为许多UI组件都需要它”。我尝试了几种解决方案,如SetApartmentState、Lo

我想一个MFC应用程序可以创建没有CLR依赖的WPF控件。我的解决方案是创建一个带有CLR依赖项的MFC常规Dll,它调用我的WPF控件库来创建WPF控件。MFC应用程序调用此MFC常规Dll来创建wpf控件。问题在于调用代码“HwndSource^source=gcnew HwndSource(0,0,0,0,0,name,IntPtr::Zero);”时,应用程序会抛出一个异常“调用线程必须是STA,因为许多UI组件都需要它”。我尝试了几种解决方案,如SetApartmentState、LoadLibrary、CreateThread、Threading::Start等,但它们都不起作用

MFC应用程序是一个基于对话框的应用程序,调用代码为:

void CMFCApplication1Dlg::OnBnClickedButton1()
{
    CreateCLRControl();
}
MFC常规dll使用共享动态库中的MFC dll,导出函数为:

void CPPAPI CreateCLRControl()
{
    String^ name = gcnew String("Name");
    HwndSource^ source = gcnew HwndSource(0, 0, 0, 0, 0, name, IntPtr::Zero); // This code will raise the STA ... exception
}

通过调用在并发模型设置为STA的线程上初始化COM。