我想在我程序的主线程上使用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;
}
答案 0 :(得分:3)
当我在Visual Studio 2012中创建一个只有一个main()
函数的新C ++ / CLI项目,然后在[System::STAThread]
前添加main()
时,它编译并运行没有问题。对我来说,这意味着它很可能是项目之间的设置差异。
我的建议是做同样的事情。创建一个新的C ++ / CLI项目,添加[System::STAThread]
并查看它是否有任何问题。如果没有,那么你就是要检查两个项目之间的差异,以确定为什么一个正常工作而另一个正在给你一个错误。