长时间运行的任务,通常在后台线程执行,以保持UI冻结。 这似乎穿线逻辑可以驻留在任一视图中或在控制器中。
作为一个例子(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());
}
}
是否有优势,做一个或其他方式?