Await alternative in .NET 4.0?
.net, c#, c#-5.0, task-parallel-library
Solution
I think your basic options are
- Using `Task` and `.ContinueWith()`
- Using the Async CTP and `async` / `await`
- Using Reactive Extensions
The easiest way is probably to install the Async CTP. As far as I know the license allows comercial usage. It patches the compiler and comes with a 150kb dll that you can include into your project.
You can use `Task` and `.ContinueWith()`. But that means, that you have to take some effort with exeption handling and flow control.
Tasks are a functional construct. That's why `ContinueWith()` does not mix well with imperative constructs like `for` loops or `try-catch` blocks. Therefore `async` and `await` got introduced, so that the compiler can help us out.
If you can't have that support of the compiler (i.e. you use .Net 4.0), your best bet is to use the TAP together with a functional framework. Reactive Extensions is a very good framework to treat asynchronous methods.
Just google for "reactive extensions tasks" to get started.
Problem
What would be the best alternative for the await keyword in .NET 4.0 ? I have a method which needs to return a value after an asynchronous operation. I noticed the wait() method blocks the thread completely thus rendering the asynchronous operation useless. What are my options to run the async operation while still freeing the UI thread ?