It's all too familiar and an annoying issue when you are using an application and click on some button or control only to find that the application's UI all of a sudden appears to stop responding, the busy cursor shows up, and you are left there wondering if the application is still working, or if it has locked up and needs to be forced quit. This unpleasant experience is almost always the result of a function or action that takes a considerable amount of time to return after being called. If this function or action is called on the same thread that the GUI objects live on, it will block all the code that is running in the background and that is managing the GUI, leading to this locked up and unresponsive interface.
Being able to design an application in a way that prevents this situation from being presented to its users requires additional considerations in comparison to most traditional procedural approaches. This chapter explores this problem by providing solutions, and hopefully...