【发布时间】:2016-02-09 05:37:00
【问题描述】:
UWP、Win10、C++/CX
我想在 C++/CX 中同步使用 WinRT 异步函数,就像 C# 的 await 一样。在 C++/CX 中是否可以替代 C# 的 await?
我看过__await这篇文章,但是不起作用,可能是win8的,win10不支持,或者我错了。
顺便说一句,Concurency::create_task(option).get() 满足我的需要,但是太长了,它不能在 UI 线程上工作(我不知道为什么,如果你知道,你能告诉我吗?)
谢谢你:)
【问题讨论】:
-
我不知道您的问题的答案,但我建议您将 C# DLL 导入您的项目。这是一个例子。 codeproject.com/Tips/695387/… 这样您就可以从您的 C++ 项目中访问酷炫的 c#/ .net 方法
-
向 C++ 添加可恢复函数是 ISO proposal。它们通常以蜗牛的速度移动,您至少必须等到 C++17。如果您想使用experimental headers,那么您今天就可以使用 VS2015。
-
您为什么要这样做?我想不出一个令人信服的理由来阻止 UI 线程。如果您需要序列化操作,请使用continuation task。 @ProblemSlover:如果您只有一把锤子,那么每个问题都开始看起来像钉子。现在你有两个问题。
-
@IInspectable 感谢您的回答。事实上,我们的目标是将现有项目交付给 WinRT,该项目有太多遗留代码。
-
例如,如果有API使用win32 api保存文件,而其他代码是独立于paltform的,那么通过WinRT重新构建API并保持其他代码不变的成本最低。不幸的是,WinRT async apis 不能满足我们,这就是我问这个问题的原因。
标签: windows-runtime uwp c++-cx