【发布时间】:2009-10-22 00:10:31
【问题描述】:
我想知道如何在用户启动进程时测量应用程序Loading Time,应用程序实例,以便我可以显示进度条或通知用户在加载应用程序时发生了什么或完成了多少应用程序加载。
我的意思是,如果我想用进度条显示当前进度,我想我可以用数字定义当前进程,这样我就可以增加 ProgressBar 控件的 Value 属性。
提前致谢。
真诚的。
编辑:
我发现的解决方案是:
你可以使用 System.Diagnostics.Stopwatch 用于 测量时间。拨打电话 方法从开头开始 表单的构造函数。
表格显示后, 通常是 Application.Idle 事件 上升。因此,您可以调用 Stop 此事件的处理程序中的方法。 但是你应该检查这个事件 确实会上升,例如通过使用 System.Diagnostics.Debug.WriteLine, 连同来自的工具 DebugView sysinternals.com。
所以我们可以像这样使用System.Diagnostics.StopWatch:
using System;
using System.Diagnostics;
using System.Threading;
class Program
{
static void Main(string[] args)
{
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
Thread.Sleep(10000);
stopWatch.Stop();
// Get the elapsed time as a TimeSpan value.
TimeSpan ts = stopWatch.Elapsed;
// Format and display the TimeSpan value.
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds / 10);
Console.WriteLine(elapsedTime, "RunTime");
}
}
然后当 Idle 事件触发时,我将能够找到加载时间并将其显示在进度条上,但我认为进度条不会显示加载时间的准确百分比。
【问题讨论】:
-
您将能够知道过去了多少时间,但不知道还剩多少时间。您至少需要两者才能使进度条正常工作。但它仍然不是一个顺利的迹象。如果沿线的某些事情需要更长的时间怎么办。如果您的进度条也停止,那么它就不是真正的基于时间的进度条。
-
@o.k.w 实际上你是对的。因此,CLR 中似乎没有 API 或库可以处理此问题并为我们提供类型来测量加载时间。
标签: c# process splash-screen