坚持记录实属不易,希望友善多金的码友能够随手点一个赞。
共同创建氛围更加良好的开发者社区!
谢谢~
概述
本文着重于System.Threading.Timer的简单使用方法。
由于在实际开发过程中,原先使用的是System.Timers.Timer这个计时器,但在运行一段时间后,发现其会被GC自动回收掉;拜读过一些大佬的文章后,比较下来认为System.Threading.Timer 的性能会更安全一些,故此使用System.Threading.Timer 来进行疲劳方面的测试。
实测下来,System.Threading.Timer仍旧会在运行一段时间后,被系统回收掉,如果需要连续性较长的测试,建议使用线程来完成:
C#-系统Timer会自动停止,使用线程进行连续性测试
创建计时器对象
为避免被GC回收,因此将计时器声明为全局对象;在点击按钮,进行实例化对象,并设置其循环执行的方法、间隔的时间;
参数1,循环执行的方法;
参数2,回调方法需要使用的信息;
参数3,延迟执行的时间;
参数4,间隔执行的时间
//全局私有
System.Threading.Timer LoopTimer;
private void btnFatigueTest_Click(object sender, EventArgs e)
{
btn_FatigueCap.Enabled = false;
btn_StopCap.Enabled = true;
//创建计时器
//参数1,循环执行的方法;参数2,回调方法需要使用的信息;
//参数3,延迟执行的时间;参数4,间隔执行的时间
LoopTimer = new System.Threading.Timer(Loop,null,0,1000);
}
循环执行的方法
int count =1;
/// <summary>
/// 循环调用方法
/// </summary>
/// <param name="sender"></param>
private void Loop(object sender)
{
Console.WriteLine($"计时器: {count++}");
}
停止计时器
private void btn_StopCap_Click(object sender, EventArgs e)
{
//释放计时器
LoopTimer.Dispose();
count = 1;
btn_FatigueCap.Enabled = true;
btn_StopCap.Enabled = false;
}
参考文章
以下是主要上述内容主要参考的文章,认为该大佬的描述比较详细,有兴趣的码友可自行查看。