单击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。任何人都可以向我解释原因吗?非常感谢。
答案 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
中的值偏离零。