2013-01-22 33 views
2

我试图调试用C++编写的Windows(Metro)Store应用程序中的几个线程之间的死锁,并且将每个线程存储它在各个点的ID都是有帮助的,这样我就可以找出每个其他线程块线程正在等待。如何从Windows应用商店中的C++访问System.Environment?

.NET for Windows Store apps overview说在System名称空间中使用Environment::CurrentManagedThreadId来访问该线程。我本来以为我可以简单地写:

int threadId = System::Environment::CurrentManagedThreadId; 

但是,Visual Studio的2012抱怨说,“‘系统’:不是类或命名空间名称”,当我尝试编译cpp文件。

我是否缺少定义System命名空间的头文件?我没有看到System.Environment或Environment.CurrentManagedThreadId网页中列出的任何头文件。

FWIW,Visual Studio 2012中的对象浏览器向我显示了System.Environment对象,而对象浏览器显示它应该具有CurrentManagedThreadId属性。

+1

C++/CX不是.NET,因此.NET概述不是您应该阅读的资源。 ; - ] – ildjarn

+0

@JamesMcNellis你可以指点我如何从C++/CX代码调用P/Invoke的文档吗?我认为这只适用于.Net。我有一个可怕的时间,找出哪些文档适用于C++/CX与C++/CLI。 – wrdieter

+0

对不起,我误解了这个问题,并没有意识到你正在使用C++(显然我没有注意到......)。无论如何,不​​,你根本不需要P/Invoke。您可以像调用其他函数一样调用该函数。 –

回答

0

C++/CX不以.NET为目标。您不能直接从C++/CX代码使用.NET Framework。

您可以使用Windows API函数GetCurrentThreadId来获取当前线程标识符。

相关问题