2012-05-21 60 views
1

可以在C++/CLI中使用TPL嗎?
我發現的主要材料與PPL有關,而不是TPL。如果我試着爲我所用的C#(如檢索的異步操作的結果,通過->Result)使用TPL,然後得到像TPL + C++/CLI:教程,示例

錯誤150錯誤C2039:「結果」:是不是「系統中的一員::線程::任務::任務`1'

任何示例或教程?謝謝

+0

'task-> Result'對我來說工作得很好。你能告訴我們你的代碼嗎?另外,我懷疑你會找到任何好的教程,因爲除了一些特定的任務(如互操作)之外,C++/CLI並不常用。 – svick

回答

3

你忘了發佈代碼片段,這樣你的問題是相當不可想象的。請務必使用Task<TResult>以擁有Result屬性。這個示例代碼編譯和運行沒有麻煩。

#include "stdafx.h" 
#using <System.Core.dll> 
using namespace System; 
using namespace System::Threading::Tasks; 

ref class SomeTask { 
public: 
    static int run() { 
     return 42; 
    } 
}; 

int main(array<System::String ^> ^args) 
{ 
    Task<int>^ task = Task<int>::Factory->StartNew(gcnew Func<int>(&SomeTask::run)); 
    task->Wait(); 
    Console::WriteLine(task->Result); 
    return 0; 
} 
+0

非常感謝您的意見。事實上,沒有跡象表明TPL不適用於cpp/CLI。我挖掘了更多,發現編譯器的「平臺工具集」參數設置爲v90而不是v100(我已經將項目從3.5移植到4.0)。這是原因。 –