【发布时间】:2017-05-25 13:53:28
【问题描述】:
我正在使用秒表来了解积分(游戏)系统的某些操作运行多长时间。
我是这样定义的:
Stopwatch sekunde = new Stopwatch();
long tocke;
long glavnetocke;
long cas;
tocke 和 glavnetocke 是点。
然后在“构造”中我需要这样做:
sekunde.Start();
Thread.Sleep(10000);
sekunde.Stop();
如果我不做 10000 的线程睡眠,它将无法工作。
稍后在事件处理程序中我会这样使用它:
sekunde.Start();
viewer.Clear();
viewer.DrawBody(body, 10.0, Brushes.Green, 10.0, Brushes.Green);
sekunde.Stop();
cas = (long)sekunde.Elapsed.TotalSeconds;
tocke = tocke + ((cas / 10));
if (tocke > 200)
{
glavnetocke = glavnetocke + 1;
tocke = 0;
}
查看器是绘制站在摄像机前的人的身体。 如果我将 thread.sleep 保留为 10000,它将起作用,否则不会。但我需要这个消失,因为它会停止整个程序。即使你只是在我按下表单中的按钮后才会发生这种情况,我需要等待 10 秒才能开始。正在考虑只添加加载屏幕,但它不起作用,因为它冻结了整个程序,所以它不显示加载 gif。
编辑:
好吧,你可以看到“tocke = tocke +((cas / 10)); 如果我删除 thread.sleep 甚至降低睡眠数,则 tocke 始终为 0。秒表需要时间来初始化吗? 我想知道操作运行到 long 类型变量的时间,这样我就可以用它来计算游戏点数。 (cas = (long)sekunde.Elapsed.TotalSeconds;)
【问题讨论】:
-
请考虑编辑您的问题。你说它不起作用是什么意思?你想达到什么目标?
-
@kuskmen 我编辑了...
-
它必须在没有任何 Thread.Sleep 的情况下工作。您可能会在小于 1 秒时查看 sekunde.Elapsed.TotalSeconds 吗?查找滴答声或经过的毫秒数
-
我假设,“sekunde.Stop();”睡眠后只是为了测试睡眠?否则你的秒表不会启动......
-
@LeonidMalyshev 如果我离开 Thread.Sleep,为什么它会起作用,否则不会?不到 1 秒我不看。
标签: c# visual-studio stopwatch