C# 睡眠正在干扰秒表

C# 睡眠正在干扰秒表,c#,visual-studio,stopwatch,C#,Visual Studio,Stopwatch,我使用秒表来了解积分(游戏)系统的一些操作运行了多长时间 我这样定义它: Stopwatch sekunde = new Stopwatch(); long tocke; long glavnetocke; long cas; sekunde.Start(); viewer.Clear(); viewer.DrawBody(body, 10.0, Brushes.Green, 10.0, Brushes.Green); sekun

我使用秒表来了解积分(游戏)系统的一些操作运行了多长时间

我这样定义它:

Stopwatch sekunde = new Stopwatch();
long tocke;
long glavnetocke;
long cas;
        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;
        }
托克和格拉夫内托克是重点

然后在“构造”中,我需要这样做:

 sekunde.Start();
 Thread.Sleep(10000);
 sekunde.Stop();
如果我不为10000做线程睡眠,它就不会工作

稍后在事件处理程序中,我会这样使用它:

Stopwatch sekunde = new Stopwatch();
long tocke;
long glavnetocke;
long cas;
        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或更低的sleep编号,则tocke始终为0。秒表是否需要时间进行初始化或其他操作?
我想获取操作运行到长类型变量的时间,这样我就可以使用它来计算ingame点。(cas=(long)sekunde.appeased.TotalSeconds;)

通过将
TotalSeconds
转换为
long
您正在切掉分数部分。我使用
double
s重做了您的示例,它似乎对我有效:

Stopwatch sekunde = new Stopwatch();
long glavnetocke = 0;
double cas;
double tocke = 0;

sekunde.Start();
sekunde.Stop();

cas = sekunde.Elapsed.TotalSeconds;
tocke = tocke + ((cas / 10));
if (tocke > 200)
{
    glavnetocke = glavnetocke + 1;
    tocke = 0;
}
结果


<代码> CAS=0 00000×15 < /代码>(在我的设置)

请考虑编辑你的问题。它是什么意思?你想实现什么?@我编辑的库斯克曼……它必须工作而没有任何线程。睡觉。你可以看SeCunDe.ELAPSE.DoT秒小于1秒吗?寻找蜱或毫秒EelpSEDI假设,sekunde.Stop();“睡眠后只是为了测试睡眠?否则你的秒表就不能启动了…@LeonidMalyshev那么,如果我离开线程,为什么它能工作呢?睡眠,否则不行?我不会在不到1秒的时间里看它。”。