It all boils down to design decisions. We have all been there, but if you are trying to keep the UI responsive then you are going to want to play with tasks or threads (framework version dependent), I have been learning RX a little to aid my UI responsiveness it might help you as well but then again it might not. If its an application that you only use then that is one thing but if you are publishing for others then you might consider the above advice.
Take a look at Dispatcher class in WPF or Execute.OnUIThread in CM