实现“取消”功能模式C#

时间:2015-10-19 07:09:52

标签: c# .net design-patterns backup

我写了一个执行系统备份的c#程序。

备份过程基本上从数据库中读取数据并在文件系统中创建备份。

备份过程需要45-75秒才能完成, 我的产品经理要求我实施取消功能。

所以这就是我所做的:

  1. 如果已应用取消,我会在数据库中保留“取消请求”记录。

  2. 在整个备份过程中(包含几个步骤),我正在调用方法ThrowIfCancelRequested()并回滚过程,如果是这样的话。

  3. 现在问题是它使我的代码变得丑陋,现在我到处都有这个ThrowIfCancelRequested(),我的意思是它完成了工作,但它的丑陋。

    我还想过可能会重新设计我的备份流程结构,这样我的主备份流程就会注入包含取消操作的备份步骤。

    E.g。

    interface IBackupStep
    {
        void Execute();
    
        void OnCancel();
    }
    
    void main(IEnumerable<IBackupStep> steps)
    {
        foreach (var step in steps)
        {
            step.Execute()
        }
    }
    

    这里的问题我几乎不可能做到,备份过程最初并非由我编写,而且很难重构它的神对象代码。

    所以我的问题是,也许还有另一个我想念的替代方案,这也会使我的代码工作并且设计得更好?

0 个答案:

没有答案