c#计时器如何保存计时

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#计时器如何保存计时相关的知识,希望对你有一定的参考价值。

c#中提供了三种类型的计时器:
1、基于 Windows 的标准计时器(System.Windows.Forms.Timer)
2、基于服务器的计时器(System.Timers.Timer)
3、线程计时器(System.Threading.Timer)
拓展:
一、基于 Windows 的标准计时器(System.Windows.Forms.Timer)
开发工具的工具箱中的Timer控件拖到窗体上,然后设置一下事件和间隔时间等属性就可实现功能,最简单的方式。
二、基于服务器的计时器(System.Timers.Timer)
其中包含两种方式:
(1)通过SynchronizingObject属性依附于窗体
(2)不使用SynchronizingObject属性 (多线程的方式)
三、线程计时器(System.Threading.Timer)
线程计时器也不依赖窗体,是一种简单的、轻量级计时器,它使用回调方法而不是使用事件,并由线程池线程提供支持。
参考技术A 如果需要多次保存计时,可以弄个数组来保存,每次保存就往数组里面添加。追问

有具体程序或格式么?

参考技术B

CLK_TCK 可能在某些电脑上要用  CLOCKS_PER_SEC

c# - 如何立即停止计时器

【中文标题】c# - 如何立即停止计时器【英文标题】:c# - How to stop a timer Immediately 【发布时间】:2015-09-19 10:58:09 【问题描述】:

我有一个间隔为 100 的 System.Timers.Timer。我的问题是,如果我在计时器中设置 enable = false,计时器方法中的当前工作进程是否会立即停止?或方法完成后。

private void watchTags(object obj, ElapsedEventArgs handler)
    
        for(int i=0 ; i<10000;i++)
            // some works
        
    
private void stop_button()
    watcher.Enabled = false;

我的循环是立即停止还是在完成后停止?

【问题讨论】:

所以谷歌对你不起作用.. ??现在来吧...例如这是以前的帖子***.com/questions/4563704/… @MethodMan 我已经知道了。我的问题是进程何时终止。在完成当前方法后或一旦启用设置为 false 所以解释一下 watchTags 是如何被调用的......你有一个 for 循环,但是你想在 for 循环中做什么...... 从硬件中读取一些持续约 100 毫秒的数据 如果您的方法处于时间标记事件中,它将在没有完成过程的情况下停止。 【参考方案1】:

执行timer.Enabled = false 将停止计时器。同timer.Stop();

timer.Enabled = false = System.Threading.TimerSystem.Timers.Timer

timer.Stop(); =System.Windows.Forms.Timer

【讨论】:

【参考方案2】:

如果你使用System.Timers.Timer,你可以这样停止

timer.Enabled = false

如果您使用的是System.Threading.Timer,请使用此

timer.Change(Timeout.Infinite , Timeout.Infinite)

或者使用

timer.Stop(); 

如果您使用的是System.Windows.Forms.Timer

参考C# - how do you stop a timer?

【讨论】:

【参考方案3】:

使用timer.Stop();timer.Enabled = false;

希望对你有帮助。

【讨论】:

【参考方案4】:

好的。正如 Vijay Kumbhoje 在 cmets 中所说,当计时器完成时,watchTags 方法中的任何进程都会立即结束而不会完成工作。

【讨论】:

【参考方案5】:

如果 2020 年有人去这里看到这个公认的答案,那就不对了。 Elapsed 事件不会以timer.Stop() 结束。这只会再次停止启动Elapsed 事件,仅此而已。

我认为这个帖子中接受的答案是正确的:c# Task cancellation when using System.Timers

【讨论】:

以上是关于c#计时器如何保存计时的主要内容,如果未能解决你的问题,请参考以下文章

保存计时器高分

如何停止在 C# 类中运行的计时器

C# - 你如何停止计时器?

c# - 如何立即停止计时器

在 C# 中发送 http 请求时,如何设置计时器或等待?

如何在 C# 中重置计时器?