【问题标题】:How to access System.Environment from C++ in a Windows Store App?如何在 Windows 应用商店应用程序中从 C++ 访问 System.Environment?
【发布时间】: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


【解决方案1】:

C++/CX 不针对 .NET。您不能直接从 C++/CX 代码使用 .NET Framework。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    相关资源
    最近更新 更多