You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何用计时器准确统计Triple DES加密时长?

解决Triple DES加密完成后停止计时器的问题

嘿,这个问题其实很好解决——你只是忘了在加密代码执行完毕后手动停止计时器而已!计时器启动后会一直运行,直到你主动调用停止的方法。

方法一:在加密代码后直接停止计时器

你只需要把停止计时器的代码放在加密逻辑的后面,确保加密完成后立刻停止计时:

timer1.Enabled = true;
timer1.Start();

// 3DES ENCRYPTION
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
UTF8Encoding utf8 = new UTF8Encoding();
TripleDESCryptoServiceProvider tDES = new TripleDESCryptoServiceProvider();
// 这里补充你的完整加密逻辑,比如设置密钥、处理加密数据等操作

// 加密完成后立刻停止计时器
timer1.Stop();
timer1.Enabled = false;

方法二:用try-finally保证异常时也能停止计时器

如果你的加密过程有可能抛出异常(比如密钥错误、数据格式问题),最好把停止计时器的代码放在finally块里,这样就算加密出错,计时器也不会一直跑:

timer1.Enabled = true;
timer1.Start();
try
{
    // 3DES 加密代码
    MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
    UTF8Encoding utf8 = new UTF8Encoding();
    TripleDESCryptoServiceProvider tDES = new TripleDESCryptoServiceProvider();
    // 你的加密逻辑...
}
finally
{
    // 无论加密成功还是失败,都会执行这里的代码停止计时器
    timer1.Stop();
    timer1.Enabled = false;
}

额外推荐:用Stopwatch统计耗时更精准

其实如果你的需求只是统计加密的执行时长,用.NET自带的Stopwatch类会比计时器控件更合适,它是专门用来高精度测量代码运行时间的,不受UI线程负载影响:

// 初始化并启动秒表
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();

// 3DES 加密代码
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
UTF8Encoding utf8 = new UTF8Encoding();
TripleDESCryptoServiceProvider tDES = new TripleDESCryptoServiceProvider();
// 你的加密逻辑...

// 停止计时并获取耗时
stopwatch.Stop();
TimeSpan elapsedTime = stopwatch.Elapsed;
// 可以用 elapsedTime.TotalMilliseconds 获取毫秒数,或者其他时间单位

这样就能准确得到加密操作的实际耗时啦~

内容的提问来源于stack exchange,提问作者safaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:46:48