【发布时间】:2016-05-29 16:03:17
【问题描述】:
我有一种情况,我必须使用 c#-Winform 中的编码创建一些机制,这样当我启动任何特定的 winform 时,如果启动时间超过指定的秒数(比如说 10 秒),那么我必须显示一个loader(ajax loader 类型的东西),直到我没有完全显示表单。 (这个表格需要很多时间,因为它在大量计算后显示数据,所以我希望同时显示一些加载器)。
I successfully designed the circle like loader。现在的问题是:
(1.) 如何知道表单启动时间是否超过 10 seconds ?所以我启动加载程序。
(2.) 另一个问题是我必须让它适用于所有共同的表单(因为项目非常大,所以我不想为每个单独的表单编写加载器的代码,我想知道任何方法来实现全局此功能,如果任何当前启动的表单花费超过 10 秒,那么它会显示加载器(并且应该适用于所有启动时的表单,如果它们花费超过 10 秒而不编写代码以显示在每个单独的表单上)并停止加载器如表格所示。
如何实现这两个功能?
【问题讨论】:
-
为什么要等十秒钟?如果花费的时间是 10.5 秒呢?作为用户,我一直在等待表单完成,并且仅等待 0.5 秒,我得到一个指示需要一段时间。你不能根据你需要做的计算次数来显示一个加载器吗?另外,在构造函数中,繁重的工作在哪里完成?负载?请显示代码以及到目前为止您提出的内容(计时器?)
-
我不知道你为什么要为此烦恼。标准的习惯用法是显示一个 busy 光标。你肯定见过。您只需在加载操作之前显示它,一旦加载完成,忙碌光标将自动消失。或者,您可以只显示您的小加载动画,执行任务,并在完成后删除加载动画。尝试编写时间检测代码是不值得的。
-
@CodyGray 我不允许在每个单独的表单上编写代码......因为项目非常大。是否有任何解决方案可以在全局范围内实现它,而不是为 loader 的每个表单编码?
-
@user3085082 是从基本形式派生的形式,如果是这样,您也许可以在那里做一些魔术。否则我看不到该怎么做。如果项目的规模使人们不允许您进行改进,那么您显然会有更大的担忧。
-
是的,有一个主winform,菜单中有各种子项。在每个菜单上单击我们都会启动一个子窗体来进行计算。那么如何在这个主窗口窗体上实现这种魔力呢?
标签: c# .net multithreading winforms process