作为我的应用程序的一部分,我有一个长时间运行的任务。任务可以启动,暂停,恢复和取消。我正在努力为这些操作找到最佳界面。
两个看起来很清楚:Pause
和Cancel
。这将离开启动和恢复操作。我可以同时包含Start
和Resume
。这有一个缺点,要么API使用者在开始/恢复操作之前检查状态以调用正确的方法,或者使方法彼此别名。我认为一种可能性是使用 启动或恢复,但我不知道哪一个是最合适的。
有没有人在.NET Framework中有这种行为的例子?我喜欢在可用时遵循既定的模式。
编辑:到目前为止,我发现的最相似的案例来自Workflow库。 WorkflowInstance
有方法:
答案 0 :(得分:0)
“运行”可能同时捕获“开始”和“恢复” - 或者可能“开始”?
答案 1 :(得分: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
。
答案 2 :(得分:0)
界面看起来非常像Windows服务。 ServiceController类为其方法启动/停止/暂停/继续。我可以看到将Start / Continue方法合并为一个,比如Run,但是你必须在内部处理差异。您可能想要考虑如何从暂停状态“重置”服务。如果你只有Run,那么你需要做Stop / Run。启动可能会自动重置状态,从而消除了这种情况下的需求。我将检查用例,并从正常路径的角度设计它。