1

我需要从我的 C# Win8/WinRT 应用程序中调用 C++ 库。

该库是多线程的,并通过调用 Win32 API(WaitForSingleObject等)来管理线程。我能够找出所有这些调用的替代品(总是有一个...Ex可用于应用程序的版本,例如,如果您正在寻找它,请WaitForSingleObjectEx那里查看)。<synchapi.h>

但是有一个调用我无法弄清楚如何替换:它是对CreateThread函数的调用。没有等价物,所以看起来这样的线程创建现在必须通过新的 API。

但我还没有深入研究 WinRT 上的新线程模型。根据您的经验,移植此线程创建调用的正确方法是什么?唯一的限制是它是一个 C++ 库,我将其构建为“WinApp 的 C++ 库”项目。

加起来:

在我为我的应用程序链接的库中,线程是通过CreateThreadWin32 API call创建的。我需要将这些调用更改为什么才能在我的应用程序环境中运行?

4

1 回答 1

0

你是对的:你不能简单地用一个新的调用替换 CreateThread。您必须将线程代码移植到新的 API。

根据我的经验,如果您希望更轻松地将代码移植到 WinRT ThreadPool 模型,Raman Sharma 发布的链接是一个很好的参考。我已经成功地使用在那里找到的 shim 来实现一个 Win32 线程仿真层,我的旧的 Win32 相关代码可以与之交互。

于 2013-05-08T17:40:13.797 回答