windows - 如何将 WinRT 异步任务集成到现有的同步库中?

标签 windows asynchronous windows-8 windows-runtime

我们有一个长期建立的、非常多平台的代码库,目前正在移植到 WinRT。我们面临的挑战之一是如何处理 WinRT 的异步风格。

例如,我们不确定如何处理 WinRT 的异步文件操作。不出所料,我们代码库的 API 是同步的。一个典型的例子是我们的 File::Open 函数,它尝试打开一个文件并返回成功或失败。我们如何在调用 WinRT 函数的同时保持函数的行为相同?

请注意,不幸的是,我们受到遗留问题的限制:我们不能简单地将 API 更改为异步。

谢谢!

最佳答案

我假设您希望重新实现该库以支持 WinRT 应用程序,同时不更改 API 的定义,以便现有应用程序保持兼容。

我认为如果在调用异步方法时不包含 await 关键字就不会执行异步操作,它应该以同步方式执行。但如果该方法返回一个值(以我的经验),它真的不起作用。

我一直在使用这段代码来同步文件操作:

IAsyncOperation<string> contentAsync = FileIO.ReadTextAsync(file);
contentAsync.AsTask().Wait();
string content = contentAsync.GetResults();

关于windows - 如何将 WinRT 异步任务集成到现有的同步库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12822694/

相关文章:

C++ 我们如何让我们的应用程序在计算机启动时启动(当然,在用户登录后)?

windows - 在汇合中创建指向网络上文件位置的链接

android - 无法获取平台 cordova-android

javascript - 我们怎么称呼 JS async "strands of execution"?

c++ - Googletest:如何异步运行测试?

wpf - Windows 8 中的 WinRT 和 WPF

windows - 如何在 hudson 服务器的代理中配置 java.home?

c++ - 如何在 Switch 语句中使用 Cmd 行参数中提供的 TCHAR*?

node.js - NodeJS 文件系统同步和性能

c++ - Shell执行未定义的错误