【发布时间】:2013-01-24 01:54:26
【问题描述】:
我正在尝试调试用 C++ 编写的 Windows (Metro) Store 应用程序中的多个线程之间的死锁,让每个线程在不同点存储它的 ID 会很有帮助,这样我就可以找出每个线程是哪个线程其他块线程正在等待。
.NET for Windows Store apps overview 表示在 System 命名空间中使用 Environment::CurrentManagedThreadId 来访问线程。我原以为我可以简单地写:
int threadId = System::Environment::CurrentManagedThreadId;
但是,当我尝试编译 cpp 文件时,Visual Studio 2012 抱怨“'System': is not a class or namespace name”。
我是否缺少定义系统命名空间的头文件?我没有看到 System.Environment 或 Environment.CurrentManagedThreadId 网页中列出的任何头文件。
FWIW,Visual Studio 2012 中的对象浏览器向我显示 System.Environment 对象,对象浏览器显示它应该具有 CurrentManagedThreadId 属性。
【问题讨论】:
-
C++/CX 不是 .NET,因此 .NET 概述不是您应该阅读的资源。 ;-]
-
@JamesMcNellis 你能告诉我如何从 C++/CX 代码调用 P/Invoke 的文档吗?我以为它只适用于.Net。我很难弄清楚哪些文档适用于 C++/CX 与 C++/CLI。
-
对不起,我误读了这个问题,没有意识到你正在使用 C++(显然我没有注意......)。无论如何,不,您根本不需要 P/Invoke。您可以像调用任何其他函数一样调用该函数。
标签: c++ windows-runtime c++-cx