We have a long established, greatly multiplatform codebase that is currently being ported to WinRT. One of the challenges we’re facing is how to handle WinRT’s asynchronous style.
For example, we are unsure how to handle WinRT’s async file operations. Unsurprisingly, our codebase’s API is synchronous. A typical example is our File::Open function which attempts to open a file and return with success or failure. How can we call WinRT functions and yet keep the behavior of our functions the same?
Note that we are unfortunately constrained by legacy: we cannot simply go and change the API to become asynchronous.
Thanks!
I assume you wish to reimplement the library to support WinRT apps while not changin the definitions of the APIs so that existing applications remain compatible.
I think that if you don’t include the await keyword when calling an async method you will not do an async operation, it should execute in a synchronous way. But it really doesn’t work if the method returns a value (in my experience).
I’ve been using this code to make a file operation synchronous: