用于可中断操作的API动词

时间:2010-06-07 15:10:51

标签: .net api asynchronous

作为我的应用程序的一部分,我有一个长时间运行的任务。任务可以启动,暂停,恢复和取消。我正在努力为这些操作找到最佳界面。

两个看起来很清楚:PauseCancel。这将离开启动和恢复操作。我可以同时包含StartResume。这有一个缺点,要么API使用者在开始/恢复操作之前检查状态以调用正确的方法,或者使方法彼此别名。我认为一种可能性是使用 启动或恢复,但我不知道哪一个是最合适的。

有没有人在.NET Framework中有这种行为的例子?我喜欢在可用时遵循既定的模式。

编辑:到目前为止,我发现的最相似的案例来自Workflow库。 WorkflowInstance有方法:

  • 中止
  • 开始
  • 挂起
  • 恢复
  • 终止

3 个答案:

答案 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() { ... }
}

实际上,这取决于你正在做什么,这是否合适(例如,这种方法 - 可以想象 - 允许你产生并行运行的任务的多个实例;我没有如果这是合适的想法。

StartResume是非常标准的术语。如果您只想包含其中一个,我会选择开始。如果您正在寻找可以同时满足这两个目的的更合适的术语,我会选择类似Run的内容(因为StartResume都暗示了某项任务的状态。 .. Resume尤其...... IMO Run传达的内容略小于Start

答案 2 :(得分:0)

界面看起来非常像Windows服务。 ServiceController类为其方法启动/停止/暂停/继续。我可以看到将Start / Continue方法合并为一个,比如Run,但是你必须在内部处理差异。您可能想要考虑如何从暂停状态“重置”服务。如果你只有Run,那么你需要做Stop / Run。启动可能会自动重置状态,从而消除了这种情况下的需求。我将检查用例,并从正常路径的角度设计它。