当一个长期运行的进程正在执行,它是一个良好做法的反馈提供给用户,例如,更新的进度条。

一些常见问题解答GUI库的建议是这样的:

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

无论如何,我们知道这是一个最佳做法单独的业务逻辑的代码用户接口的代码。上述例子是混合用户接口码内的业务逻辑功能。

什么是一个很好的技术来实现的功能的业务逻辑层的进展可以很容易地跟踪通过用户界面没有混合层?

答案任何语言或平台的欢迎。

有帮助吗?

解决方案

提供一个回调接口。业务逻辑将在一段时间调用它的方法每一次。用户层将更新进度或什么的。如果你想允许取消 - 没问题,让回调方法有返回值,这将表明需要取消。无论这将工作线程的数量。

其他提示

如果您使用的MVC模式,你可以有模型公布其目前的进展状态的特性,这些控制器可以提取这每x秒,然后把它放到视图。这是假设多线程,虽然,这我不知道,如果你允许。

出版是一个伟大的路要走。这一切都取决于该平台如何做到这一点。然而,当涉及到的 用户经验 有几个要考虑的事项,以及:

  • 不要让用户取得进展吧如果你不知道怎么长的任务是执行。什么时候离开?什么不会半路的意思吗?这是更好地利用时玻璃的功能(纺车,跳跃进酒吧,等等)。

  • 唯一有趣的事情以图取得进展是时间;什么不会半途中的一个过程的意思吗?你想知道如果你有时间,杯咖啡。如果你告诉其他的东西你可能显示该部运作的系统编程。大多数用户都不感兴趣,或者只是感到困惑。

  • 长期运行的进展应该始终支持用户有一个逃脱的一种方式,以取消的请求。你不要锁定用户于长时间。更好的仍然是处理一个长期运行的请求完全背景,并让用户获得回来的时候,结果是回。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top