长时间运行的任务通常在后台线程中执行,以防止UI冻结。看起来线程逻辑可以驻留在视图或控制器中。谁应该在MVC中处理线程?
为例(在C#),假设有一个名为RunAsync
运行在后台线程委托的方法,这里做的方式有两种:
// Option 1
public class View {
public void OnButtonClicked() {
RunAsync(() => controller.DoSomething());
}
}
public class Controller {
public void DoSomething() {
model.Foo();
}
}
或:
// Option 2
public class View {
public void OnButtonClicked() {
controller.DoSomething();
}
}
public class Controller {
public void DoSomething() {
RunAsync(() => model.Foo());
}
}
以某种方式做这件事有没有优势?
你是绝对正确的 - 只有控制器“知道”什么时候需要线程。我为什么没有想到这个? :) – casablanca 2012-07-10 06:55:34
看来其他答案也一致;我接受这个,因为这是第一个答案。 – casablanca 2012-07-10 06:56:36