We learned a lot in this chapter about providing a more responsive user interface, using synchronous and asynchronous delegates. We were able to combine the parallelized operations with a precise user interface feedback while avoiding some multithreading pains. Specifically, we covered:
- Using delegates to make cross-thread calls and update the user interface from independent threads safely
- Achieving a great responsive user interface without great efforts, using synchronous and asynchronous delegates to dispatch changes to the UI thread
- Using techniques to update the user interface many times without degrading performance
- Creating counters and other global information without collecting results, taking advantage of the single-threaded model ...