我们有一个长期建立的、非常多平台的代码库,目前正在移植到 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/