I am using the Model-View-Presenter pattern in a WinForms project and one problem (among many) that I am having is when the form tells the presenter to do something and then is un-reactive while the presenter goes of to do it. Fortunately in my project I have no problem with making all presenter calls asynchronous the question is how exactly to do it?
Should each presenter call just be wrapped in a new thread creation?*
new Thread(()=>_presenter.DoSomething()).Start();
What are best-practices here? What if the user presses an "Abort what you're doing" button? How do I abort gracefully?
.* Realistically I would probably just use some sort of a proxy on the presenter to do this rather than putting the thread creation in the WinForm