代码之家  ›  专栏  ›  技术社区  ›  Manuel Ceron

在长时间运行的流程和用户界面/业务逻辑分离期间提供用户反馈

  •  1
  • Manuel Ceron  · 技术社区  · 17 年前

    在执行长时间运行的流程时,最好向用户提供反馈,例如更新进度条。

    GUI库的一些常见问题解答建议如下:

    function long_running_progress()
        do_some_work()
        update_progress_bar()
        while finish
            do_some_work()
            update_progress_bar()
        end while
    end function
    

    无论如何,我们知道将业务逻辑代码与用户界面代码分离是一种最佳实践。上面的例子是在业务逻辑函数中混合用户界面代码。

    在业务逻辑层中实现功能的好技术是什么?业务逻辑层的进度可以通过用户界面轻松跟踪,而无需混合层?

    3 回复  |  直到 14 年前
        1
  •  5
  •   sharptooth    17 年前

    提供一个回调接口。业务逻辑每隔一段时间就会调用它的方法。用户层将更新进度或任何内容。如果您想让取消没有问题,让回调方法有一个返回值,它将指示需要取消。无论线程数多少,这都可以工作。

        2
  •  1
  •   vanja.    17 年前

    如果您使用MVC范例,您可以让模型将其当前进度状态发布为属性,控制器可以每x秒提取一次,然后将其放入视图中。不过,这假设了多线程,我不确定您是否允许。

        3
  •  1
  •   haqwin    17 年前

    用户体验 还有两件事要考虑:

    • 唯一有趣的事情是时间;过程中的中途是什么意思?你想知道你是否有时间喝那杯咖啡。如果显示其他内容,则可能显示系统编程的工作方式。大多数用户不感兴趣或只是感到困惑。

    • 长时间运行的进程应该始终支持用户转义,这是一种取消请求的方法。您不想长时间锁定用户。更好的方法是完全在后台处理长时间运行的请求,并在结果返回时让用户返回。