Q:

Who should handle threading in MVC?

Long-running tasks are usually executed in a background thread to keep the UI from freezing. It seems the threading logic could reside in either the view or in the controller.
As an example (in C#), suppose there is a method named RunAsync that runs a delegate in a background thread, here are two ways of doing it:
// Option 1

public class View {
  public void OnButtonClicked() {
    RunAsync(() => controller.DoSomething());
  }
}

public class Controller {
  public void DoSomething() {
    model.Foo();
  }
}

or:
// Option 2

public class View {
  public void OnButtonClicked() {
    controller.DoSomething();
  }
}

public class Controller {
  public void DoSomething() {
    RunAsync(() => model.Foo());
  }
}

Is there an advantage to doing it one way or the other?

A:

I see two arguments for the Controller having the responsibility for Thread safety.

The controller is (at least conceptually) reusable by many views. We avoid repeating ourselves but putting the RunAsync() in the Controller rather than in many Views.
Only the Controller really "knows" whether any such threading is needed. Indeed we might change the controller in future. So we have a "single responsibility" way of thinking. The controller both decides whether RunAsynch() is needed and actualy makes sure it is done. 

