In one of my previous articles I have described the idea of asynchronous operations. Apart from many advantages asynchronous operations do have some disadvantages as well – they are complicated. It’s relatively complicated to implement a big, multiplatform application. Of course, it is possible to wrap native functions from your operating system with classes that will highly simplify the use of this complicated approach and they also can hide the inter-platform differences. Correct encapsulation and abstraction can result in a much more user-friendly interface.