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 如果需要多次保存计时,可以弄个数组来保存,每次保存就往数组里面添加。追问
有具体程序或格式么?
参考技术BCLK_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.Timer
或 System.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#计时器如何保存计时的主要内容,如果未能解决你的问题,请参考以下文章