为什么我不能在C ++ / CLI中使用STAThread属性?

时间:2014-09-13 03:34:24

标签: visual-studio c++-cli

我想在我程序的主线程上使用STAThread属性。但是,Visual Studio说它无法找到它。我尝试过引用必要的程序集并使用正确的命名空间,但它找不到它。

编辑:

用手动创建线程后,我能够成功地开始工作 ApartmentState到STA。我认为这相当于设置线程,不管它是主线程,但不完全是因为我正在创建另一个线程。任何人都有另一种方法来做到这一点

以下是代码:

void threadStart ()
{
    Application::Run (gcnew GraphicsForm());
}
[System::STAThread] // This will not work!
int main(array<System::String ^> ^args)
{
    Thread ^t = gcnew Thread(gcnew ThreadStart (threadStart));
    t->ApartmentState = ApartmentState::STA;
    t->Start();
    return 0;
}

1 个答案:

答案 0 :(得分:3)

当我在Visual Studio 2012中创建一个只有一个main()函数的新C ++ / CLI项目,然后在[System::STAThread]前添加main()时,它编译并运行没有问题。对我来说,这意味着它很可能是项目之间的设置差异。

我的建议是做同样的事情。创建一个新的C ++ / CLI项目,添加[System::STAThread]并查看它是否有任何问题。如果没有,那么你就是要检查两个项目之间的差异,以确定为什么一个正常工作而另一个正在给你一个错误。