2014-09-13 89 views
-2

我想在我的程序的主線程上使用STAThread屬性。但是,Visual Studio稱它無法找到它。我已經嘗試引用必要的程序集並使用適當的命名空間,但它無法找到它。爲什麼我不能在C++/CLI中使用STAThread屬性?

編輯:

我已經能夠去後手動創建與 的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

CTRL + F'STAThread' http://smellegantcode.wordpress.com/2008/06/07/ccliwpf/ – 2014-09-13 03:40:33

+0

我試過了。它不起作用。 – jax 2014-09-13 03:46:48

+0

什麼是錯誤信息? – 2014-09-13 05:29:38

回答

1

當我創建在Visual Studio 2012新的C++/CLI的項目只有一個單一的main()功能,然後在main()前面加[System::STAThread],它編譯並沒有運行問題。對我而言,這意味着它很可能是項目之間的設置差異。

我的建議是做同樣的事情。創建一個新的C++/CLI項目,添加[System::STAThread]並查看它是否有任何問題。如果不是這樣,那麼你就要檢查兩個項目之間的差異,以確定爲什麼一個工作正常,另一個給你一個錯誤。

+0

是的,當我從一個乾淨的項目開始時,我的工作也是如此。但是,在比較項目時,我不知道從哪裏開始。我應該看看每個的屬性嗎? – jax 2014-09-19 23:56:40

+0

是的,檢查屬性和參考。也可以打開項目文件並看看。不知道差異在哪裏。 – 2014-09-20 00:02:04

+0

好的,我會那樣做的。可能會有很多差異。要找出問題所在。謝謝。 – jax 2014-09-20 02:17:41

相關問題