2

C ++で記述されたWindows(Metro)ストアアプリで複数のスレッド間のデッドロックをデバッグしようとしています。各スレッドにさまざまなポイントでIDを保存させて、他の各ブロックスレッドのスレッドを特定できると便利です。を待っています。

.NET for Windowsストアアプリの概要では、System名前空間でEnvironment::CurrentManagedThreadIdを使用してスレッドにアクセスするように指示されています。私は簡単に書くことができると思っていたでしょう:

int threadId = System::Environment::CurrentManagedThreadId;

しかし、Visual Studio 2012は、cppファイルをコンパイルしようとすると、「'System':はクラス名または名前空間名ではありません」と文句を言います。

システム名前空間を定義するヘッダーファイルがありませんか?System.EnvironmentまたはEnvironment.CurrentManagedThreadIdWebページにヘッダーファイルがリストされていません。

FWIW、Visual Studio 2012内のオブジェクトブラウザーにはSystem.Environmentオブジェクトが表示され、オブジェクトブラウザーにはCurrentManagedThreadIdプロパティが必要であることが示されます。

4

1 に答える 1

0

C++/CX は .NET をターゲットにしません。C++/CX コードから直接 .NET Framework を使用することはできません。

Windows API 関数GetCurrentThreadIdを使用して、現在のスレッド識別子を取得できます。

于 2013-01-23T17:54:26.777 に答える