可中断操作的 API 动词

问题描述 投票:0回答:3

我的应用程序中有一个长时间运行的任务。任务可以启动、暂停、恢复和取消。我正在努力寻找最适合这些操作的界面。

有两个似乎很清楚:

Pause
Cancel
。这就留下了启动和恢复操作。我可以同时包括
Start
Resume
。这样做的缺点是,要么要求 API 使用者在开始/恢复操作之前检查状态以调用正确的方法,要么使方法彼此成为别名。我认为一种可能性是使用“开始”或“恢复”,但我不知道哪一个最合适。 有人在 .NET Framework 中有此类行为的示例吗?只要有可用的既定模式,我更喜欢遵循它们。

编辑:

到目前为止我发现的最相似的案例来自工作流库。 WorkflowInstance

有方法:

中止
  • 开始
  • 暂停
  • 简历
  • 终止
.net asynchronous
3个回答
0
投票


0
投票

public class Task { public TaskController Start() { TaskController controller = new TaskController(this); ... // start the task return controller; } } public class TaskController { private Task task; internal TaskController(Task task) { this.task = task; } public void Pause() { ... } public void Resume() { ... } public void Cancel() { ... } }

实际上,这取决于您正在做什么,这是否合适(例如,可以想象,这种方法将允许您生成并行运行的任务的多个实例;我不知道是否合适)。

Start

Resume
是非常标准的术语。如果您只想包含
其中一个
,我会选择开始。如果您正在寻找一个可以同时满足这两个目的的更合适的术语,我会选择像 Run 这样的术语(因为
Start
Resume
都暗示着有关任务状态的信息......尤其是
Resume
) ...并且 IMO
Run
传达的信息略少于
Start
)。
    


0
投票
ServiceController

类具有 Start/Stop/Pause/Continue 方法。我可以看到将“开始”/“继续”方法合并为一个,例如“运行”,但随后您必须在内部处理差异。您可能需要考虑如何将服务从暂停状态“重置”。如果您只有“运行”,那么您需要执行“停止/运行”。启动可能会自动重置状态,从而消除这种情况下的需要。我会检查用例并从正常路径的角度来设计它。

© www.soinside.com 2019 - 2024. All rights reserved.