将CreateThread移植到Win8 / WinRT应用程序

时间:2013-04-05 17:26:47

标签: multithreading winapi windows-8 winrt-async

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

库是多线程的,通过调用Win32 API(WaitForSingleObject等)来管理线程。我能够找出所有这些来电的替代品(应用程序总有一个...Ex版本,例如来自WaitForSingleObjectEx的{​​{1}}如果您正在寻找there对于它)。

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

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

总结性:

在我为我的应用程序链接的库中,线程是通过CreateThread Win32 API call创建的。我需要更改这些调用以便它在我的应用程序环境中运行?

1 个答案:

答案 0 :(得分:0)

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

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