2013-03-13 70 views
0

我有一个函数在我不太新的开发机器上运行了大约0.7秒。 (它在我测试的另一台机器上运行约3秒钟)在运行某个函数之前估计执行时间

我想在上述功能完成前向用户显示大约半秒的预先消息。

在函数完成之前,我不想显示消息太久,因为看着它并等待会很烦人。另一方面,我宁愿不等到功能完成,因为整个事情都是从用户操作开始的,我不想浪费时间 - 如果能够在其他功能执行任务时显示该消息。

我已经添加了一个短Thread.sleep()的循环,让预先消息挂起,如果功能“太快”,但我恐怕通常不会是这样的......所以,我想要看看我能否基于当前的机器规格大致估计执行时间,甚至可以根据当前的CPU使用情况来估计执行时间,并在运行该函数之前执行此操作。另外,由于我们正在谈论几秒和几毫秒,如果获取这些信息将花费超过几毫秒,那么这是不值得的。在这种情况下,我可能只在应用程序加载时计算一次。

有没有人有一个想法如何做到这一点?

+4

在后台线程上运行该函数,在UI线程上显示消息,并在后台线程完成其任务时删除该消息。你不需要估计任何东西,你仍然可以保持UI的自由。 – keyboardP 2013-03-13 14:20:36

+0

假设时间总是一个坏主意。你如何知道你的功能在任何机器上运行超过0.5秒? – 2013-03-13 14:22:06

+0

假设时间是不可能的:如果在过去10年中用户开始一个拥有更高优先级的繁重任务,并且您的任务刚好处于挨饿状态,该怎么办? – 2013-03-13 14:22:50

回答

1

估计时间是毫无意义的,而且很可能无法做到精确。 (尽管可能有一些情况可以完成)。

看看过去的Windows文件复制“剩下10秒钟......剩下2分钟......剩下5秒钟”它一直在根据它使用的任何指标改变估计值。最好只展示一个调整图像或消息,让用户知道正在发生的事情。

如果您正在处理的项目清单,那么这将是对你很容易,因为消息可能是:

加工项目4 100

至少这样的用户可以大致了解代码的功能。如果你没有这种情况通知用户,那么我会减少你的损失,并显示一个简单的“处理....”的消息,或一些图标,无论你喜欢你的解决方案。

相关问题