我正在尝试调试用C ++编写的Windows(Metro)商店应用程序中的几个线程之间的死锁,让每个线程在不同的点存储它的ID会很有帮助,这样我就可以找出每个线程的哪个线程其他块线程正在等待。
.NET for Windows Store apps overview表示在System命名空间中使用Environment::CurrentManagedThreadId来访问该线程。我原以为我可以简单地写一下:
int threadId = System::Environment::CurrentManagedThreadId;
但是,当我尝试编译cpp文件时,Visual Studio 2012抱怨“'System':不是类或命名空间名称”。
我是否缺少定义System命名空间的头文件?我没有在System.Environment或Environment.CurrentManagedThreadId网页中看到任何头文件。
FWIW,Visual Studio 2012中的对象浏览器向我显示System.Environment对象,对象浏览器显示它应具有CurrentManagedThreadId属性。
答案 0 :(得分:0)
C ++ / CX不以.NET为目标。您无法直接从C ++ / CX代码使用.NET Framework。
您可以使用Windows API函数GetCurrentThreadId
来获取当前的线程标识符。