gpt4 book ai didi

multithreading - 谁应该在 MVC 中处理线程?

转载 作者:行者123 更新时间:2023-12-03 22:43:33 24 4
gpt4 key购买 nike

长时间运行的任务通常在后台线程中执行,以防止 UI 卡住。似乎线程逻辑可以驻留在 View 或 Controller 中。

举个例子(在 C# 中),假设有一个名为 RunAsync 的方法。在后台线程中运行委托(delegate),这里有两种方法:

// 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());
}
}

以一种方式或另一种方式这样做有优势吗?

最佳答案

我看到 Controller 负责线程安全的两个论点。

  • Controller (至少在概念上)可被许多 View 重用。我们避免重复自己,而是将 RunAsync() 放在 Controller 中而不是许多 View 中。
  • 只有 Controller 真正“知道”是否需要任何这样的线程。事实上,我们将来可能会更改 Controller 。所以我们有一个“单一责任”的思维方式。 Controller 既决定是否需要 RunAsynch() 并且实际上确保它完成。
  • 关于multithreading - 谁应该在 MVC 中处理线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11407865/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com