How do you handle slow operations in the Model-View-Presenter (or MVC or M-V-VM or whatever variant you are using)?
When you have a slow operation in WinForms or SWT/JFace or whatever desktop framework you are using, you have to run it on a background thread to avoid completely locking up the application. Where do you handle this?
I can see a couple of solutions, but I am not entirely happy with any of them:
Have the view call always call the presenter on a background thread. That means that the view have to handle that all invocations from the presenter probably will come from a background thread.
Have the view call the presenter on the main thread. The presenter will then have to call back into the view when performing a slow operation, so that it can be run in the background.
What do you usually do?
EDIT: I just saw this article: http://www.codeproject.com/KB/threads/ThreadedExecuter.aspx . It is basically an implementation of 2. Have anyone tried anything like this?