如何在C#中多次设置StopWatch计数

时间:2018-01-04 21:02:28

标签: c# stopwatch

单击C#WinForm中的按钮时,这是我的代码:

private void aesactive_Click(object sender, EventArgs e)
    {
        Stopwatch stopWatch = new Stopwatch();
        stopWatch.Reset();
        stopWatch.Start();
        string original = textBox4.Text;
        using (var random = new RNGCryptoServiceProvider())
        {
            string inputkey = textBox5.Text;
            byte[] key = Encoding.ASCII.GetBytes(inputkey);
            random.GetBytes(key);
            byte[] encrypted = EncryptStringToBytes_Aes(original, key);

        }
        stopWatch.Stop();
        textBox6.Text = stopWatch.ElapsedMilliseconds.ToString() + " ms ";

    }

但是当我单击该按钮两次或更多时,结果始终为0 ms。任何人都可以向我解释原因吗?非常感谢。

1 个答案:

答案 0 :(得分:1)

如果您想累积时间,请在方法外移动Stopwatch变量,然后移除对Reset()的调用:

private readonly Stopwatch stopWatch = new Stopwatch();
private void aesactive_Click(object sender, EventArgs e) {
    stopWatch.Start();
    ...
    stopWatch.Stop();
    textBox6.Text = stopWatch.ElapsedMilliseconds.ToString() + " ms ";
}

现在,增加时间是一条单行道,"考虑添加一个按钮来重置秒表:

private void aesreset_Click(object sender, EventArgs e) {
    stopWatch.Reset();
}

注意:现代CPU每毫秒可以运行数百万条指令,因此可能需要多次单击该按钮才能使textBox6中的值偏离零。