.NET Timer三类控件使用

ASP.NET - Timer 控件概述       ASP.NET AJAX Timer 控件按定义的时间间隔执行回发。如果将 Timer 控件用于 UpdatePanel 控件,则可以按定义的时间间隔启用部分页更新。也可以使用 Timer 控件来发送整个页面。当您要执行以下操作时,请使用 Timer 控件:·定期更新一个或多个 UpdatePanel 控件的内容,而无需刷新整个网页。·每当 Timer 控件导致回发时运 阅读详情

NET Framework里面提供了三种Timer:

  • System.Windows.Forms.Timer
  • System.Timers.Timer
  • System.Threading.Timer

Visual Studio 2003的工具箱里面默认提供了System.Windows.Forms.Timer和System.Timers.Timer两种,而Visual Studio 2005中确只默认提供了System.Windows.Forms.Timer这一种。这里简单的介绍一下这两种Timer的区别。

System.Windows.Forms.Timer是使用得比较多的Timer,Timer Start之后定时(按设定的Interval)调用挂接在Tick事件上的EvnetHandler。在这种Timer的EventHandler中可以直接获取和修改UI元素而不会出现问题--因为这种Timer实际上就是在UI线程自身上进行调用的。也正是因为这个原因,导致了在Timer的EventHandler里面进行长时间的阻塞调用,将会阻塞界面响应的后果。下面是一个简单的例子:

public class MainForm : Form
{
private void MainForm_Load(object sender, EventArgs e)
{
timer.Interval = 1000;
timer.Tick += delegate(object o, EventArgs args)
{
DoWork();
};
timer.Start();
}

private void DoWork()
{
for (int i = 0; i < 10; i++)
{
System.Threading.Thread.Sleep(1000);
}
}
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
}

在这个例子中,DoWork方法里面将会阻塞10秒,在这10秒之内,UI将会失去响应。而通过使用System.Timers.Timer,就可以解决这个问题。因为System.Timers.Timer是在.NET的Thread Pool上面运行的,而不是直接在UI Thread上面运行,所以在这种Timer的EventHandler里面进行耗时较长的计算不会导致UI失去响应。但是这里有两个地方需要注意:

  1. 因为一般来说System.Timers.Timer不是运行在UI Thread上面的,所以如果要在这种Timer的EventHandler里面更新UI元素的话,需要进行一次线程切换,在WinForm开发中一般通过UI元素的Invoke方法完成:

    private void DoWork()
    {
    for (int i = 0; i < 10; i++)
    {
    System.Threading.Thread.Sleep(1000);
    }
    this.Invoke(new UpdateUICallBack(UpdateUI));
    }

    private delegate void UpdateUICallBack();

    private void UpdateUI()
    {
    }

  2. System.Timers.Timer有一个Property:SynchronizingObject 。如果设置了这个Property(一般是某个Form),那么之后对Timer挂接的EventHandler的调用将会在创建这个UI元素的线程上进行(一般来说就是UI线程)。值得注意的是,如果你通过WinForm设计器把System.Timers.Timer拖放到Form上,那么这个Property将会自动被设置。此时这种Timer就和System.Windows.Forms.Timer的效果一样:长调用将会阻塞界面。

 

 

    3.   System.Threading.Timer 是一个使用回调方法的计时器,而且由线程池线程服务,简单且对资源要求不高。
            "只要在使用 Timer,就必须保留对它的引用。
            "对于任何托管对象,如果没有对 Timer 的引用,计时器会被垃圾回收。即使 Timer 仍处在活动状态,也会被回收。
            "当不再需要计时器时,请使用 Dispose 方法释放计时器持有的资源。

             使用 TimerCallback 委托指定希望 Timer 执行的方法。计时器委托在构造计时器时指定,并且不能更改。此方法不在创建计时器的线程中执行,而是在系统提供的线程池线程中执行。

              创建计时器时,可以指定在第一次执行方法之前等待的时间量(截止时间)以及此后的执行期间等待的时间量(时间周期)。可以使用 Change 方法更改这些值或禁用计时器。

  Demo application:
应用场景:在windows form程序自动执行某项工作后,希望其windows form能够自动关闭。

"代码设计:

(1)首先声明Timer变量:
//一定要声明成局部变量以保持对Timer的引用,否则会被垃圾收集器回收!
private System.Threading.Timer timerClose;

(2)在上述自动执行代码后面添加如下Timer实例化代码:
// Create a timer thread and start it
timerClose = new System.Threading.Timer(new TimerCallback(timerCall), this, 5000, 0);

//Timer构造函数参数说明

Callback:一个 TimerCallback 委托,表示要执行的方法。
State:一个包含回调方法要使用的信息的对象,或者为空引用(Visual Basic 中为 Nothing)。
dueTime:调用 callback 之前延迟的时间量(以毫秒为单位)。指定 Timeout.Infinite 以防止计时器开始计时。指定零 (0) 以立即启动计时器。
Period:调用 callback 的时间间隔(以毫秒为单位)。指定 Timeout.Infinite 可以禁用定期终止。

(3)定义TimerCallback委托要执行的方法:

private void timerCall(object obj)
{
      timerClose.Dispose();
      this.Close();
}

 

 

 

ASP.NET - 演练:对多个 UpdatePanel 控件使用 ASP.NET Timer 控件       在本演练中,将使用一个 Timer 控件来更新两个 UpdatePanel 控件的内容。将 Timer 控件放置在两个 UpdatePanel 控件之外,并将其配置为这两个面板的触发器。 1、创建新页并切换到“设计”视图。 2、如果页面尚未包含 ScriptManager 控件,请在工具箱的“AJAX Extensions”选项卡中双击 ScriptManager 阅读详情

相关推荐

ASP.Net Ajax框架 Timer控件 计时器

介绍   Timer控件和我们以前在Winform中学习的Timer控件类似,         主要通过一个Interval属性和一个Tick事件来实现在一定的间隔时间内完成特定任务的功能                  需要控件ScriptManager,Timer 代码实例 public pa

寂寞的一只狗的博客 2990

.net的四个Timer类

.NET 包含四个名为 Timer的类。 分别是: System.Timers.Timer :用作多线程环境中基于服务器的或服务组件; 它没有用户界面,在运行时不可见 System.Threading.Timer :用作多线程环境中基于服务器的或服务组件; 它没有用户界面,在运行时不可见 System.Windows.Forms.Timer(仅 .NET Framework) :最宜用于Windows 窗体应用程序中,并且必须在窗口中使用 System.Web.UI.Timer(仅 .NET Framewo

weixin_43932432的博客 676

【愚公系列】2023年10月 Winform控件专题 Timer控件详解

Winform控件是Windows Forms中的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、进度条等。开发人员可以使用Winform控件来构建用户界面并响应用户的操作行为,从而创建功能强大的桌面应用程序。在Winform中,Timer控件的GenerateMember属性是一个布尔值,如果设置为true,则会为Timer控件生成一个成员,并将其添加到窗体组件的代码文件中。

愚公智库 2万+

.NET中的三种Timer的区别和用法(转)

最近正好做一个WEB中定期执行的程序,而.NET中有3个不同的定时器。所以正好研究研究。这3个定时器分别是: //1.实现按用户定义的时间间隔引发事件的计时器。此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用。 System.Windows.Forms.Timer // 2.提供以指定的时间间隔执行方法的机制。无法继承此类。 System.Thread...

weixin_30480075的博客 608

SenseVoice 实测,阿里开源语音大模型,识别效果和效率优于 Whisper,居然还能检测掌声、笑声!5分钟带你部署体验

阿里开源语音大模型:语音识别效果和性能强于 Whisper,还能检测掌声、笑声、咳嗽等

u010522887的专栏 4万+

避坑指南:为什么你的conda环境装不上Mamba?从CUDA到ABI的深度排查

本文深入解析conda环境中安装Mamba架构时常见的CUDA版本冲突、ABI不匹配等问题,提供从基础检查到深度排查的系统化解决方案。针对`causal-conv1d`和`mamba-ssm`安装失败场景,详细讲解PyTorch版本绑定、编译器工具链兼容性等关键技术要点,并给出预编译wheel选择、动态链接库配置等实用修复方案。

weixin_33738555的博客 345

Timer的使用

一、Timer是定时器 C#中常用的Timer有: System.Threading.Timer 非常轻量级,用回调函数引发,在线程池执行; 希望在另一个线程上定时执行后台任务; 不建议用于Windows窗体,因为其回调不再用户界面线程上 System.Timers.Timer 精确。用事件方式触发,在线程池执行; 是对Threading的Timer...

weixin_30700099的博客 243

ROS下UR+Realsense相机进行手眼标定

手眼标定主要是用来确定相机坐标系和机械臂坐标系之间的转换关系,从而实现后续的抓取等任务。

weixin_42157689的博客 7569

.NET中的Timer

<br /><br /> .NET 提供了三种Timer:<br />基于服务的Timer   System.Timers.Timer<br />基于线程的Timer   System.Threading.Timer <br />基于窗体的Timer   System.Windows.Forms.Timer<br />     1、System.Threading.Timer,希望在另一个线程上定时执行后台任务时,这个定时器是最好的定时器。<br />     2、System.Windows.Form

chenglingsu6的专栏 1323

Jetson Nano系统重装的艺术:从格式化到烧录的深度解析

本文详细解析了Jetson Nano系统重装的完整流程,从SD卡格式化到系统镜像烧录的进阶技巧,包括硬件选择、软件准备、常见问题处理及深度学习环境配置。特别推荐使用三星EVO Plus SD卡和官方电源以确保稳定性,适合开发者快速掌握嵌入式设备系统重装的核心技术。

weixin_28273593的博客 610

TTL转RS422(B)工业级转换模块设计:从原理到实战部署

在工业自动化与嵌入式系统中,串行通信是实现设备间数据交换的基础。其核心原理在于通过特定的电气标准与协议,将数据位序列化后进行传输。RS422作为一种差分平衡传输协议,相比常见的TTL电平,在抗共模干扰与远距离传输能力上具有显著的技术优势,这使其成为工业现场总线、楼宇自动化等对可靠性要求严苛场景的优选方案。要实现TTL设备与RS422网络的稳定互联,关键在于设计一个能够完成单端信号到差分信号高质量转换的硬件模块。这涉及到差分总线收发器芯片的选型、包含终端电阻与TVS二极管的保护电路设计,以及遵循差分走线规则的

weixin_29195615的博客 341

.NET中的Timer类型详解

.NET中的Timer类型详解 .NET FrameWork中有多个Timer,怎么根据实际情况在选择,确实是一个问题 计时器共有以下四种:

Kevin yan的专栏 3124

【BlueZ】编译产物详解:可执行文件/库文件/工具的生成路径与用途

BlueZ二次开发编译产物机制解析 摘要:在BlueZ蓝牙协议栈二次开发中,90%的报错源于对编译产物类型和路径的混淆。本文系统剖析BlueZ的三阶段编译机制:1)配置阶段生成Makefile;2)编译阶段在.libs目录下产生临时库和可执行文件(不可直接运行);3)安装阶段将产物部署到系统标准路径。重点解析守护进程、命令行工具、动态库的核心路径差异,并针对五大高频问题(如临时库运行崩溃、动态库不匹配、系统覆盖等)给出解决方案。

byte轻骑兵的技术小窝 1万+

VB.Net Timer 控件的用法

为了研究VB.Net Timer 控件的用法,做了个计时器。 最后发现用途很广泛,例如说通过本软件精确的统计到今天晚上洗澡用去了21分52秒,类似的用途很有很多,本程序使用VS2005开发,需要.net FrameWork2.0支持。 代码如下: ------Form1.vb-------------------------------------------------------

gjj202008的专栏 1万+

手把手教你学Simulink实例--使用 Simulink 进行电力电子系统的小信号模型仿真

电力电子系统(Power Electronics System)包括各种功率转换器(如 DC-DC 转换器、逆变器等)。这些设备中的关键组件(如 MOSFET、IGBT、电容器、电感器等)不仅影响系统的性能,还直接关系到系统的稳定性、效率和可靠性。因此,在设计阶段进行详细的建模和仿真至关重要。小信号模型仿真的目的是通过线性化非线性系统来评估其动态特性,包括增益、相位裕度、带宽等指标。通过本教程,我们介绍了如何使用 Simulink 进行电力电子系统的小信号模型仿真。背景介绍。

MHD0815的博客 298

ZYNQ 网络通信的四种实现方案

一,ZYNQ MIO以RGMII 接口连接外部PHY芯片实现LWIP网络通信。 二,ZYNQ PS 的 ENET0/ENET1 通过 EMIO 的方式扩展至 PL,在 PL 中通过 RGMII 接口连接扩展子卡实现 LWIP 网络通信。 在PL中搭建了1个AXI 1G/2.5G Ethernet Subsystem以及1个AXI Direct Memory Access IP 核。这两个 IP核均通过AXI 总线经S_AXI_HP0 口与PS 连接,PS 通过AXI 总线对其进行配置和控..

wangjie36的博客 1万+

Timer控件各种使用方法

timer控件的常用属性     1:Timer.Enabled 属性用于设置是否启用定时器     2:Timer.Interval 属性,事件的间隔,单位毫秒     3:Timer.Elapsed 事件,达到间隔时发生 (1 ) window中                  方法1:在visual studio工具箱中加入Timer控件,点击timer控件进入事件:

wssbwpp的专栏 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

UpdateProgress和Timer控件的使用

UpdateProgress控件:    在实际使用过程中,由于网络速度和服务器响应能力的影响,异步回发有的时候并不是想象的那么快,有时需要用户等待一段时间。在等待的过程中,用户可能不知道服务器处理完成了没有,让用户感觉有些迷茫。这时候如果我们在服务器处理数据的时候加入一个GIF动画,告诉用户稍等,等服务器处理完数据的时候GID动画消失,就会让用户感觉体贴很多。    我们可以使用UpdatePr

BraveHeart专栏 3501

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

net窗体中timer控件的使用

添加timer控件,设置Enabled属性为true,interval属性设置想要的时间,设置tick事件 声明时间变量 public static bool timerf = false;//时间变量 在tick事件下编辑相应代码  ///         /// timer控件刷新treeview         ///         ///         ///

SunShine_bqy的博客 1640

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ASP.NET - 演练:Timer 控件简介

      在本演练中,将使用三个 ASP.NET AJAX 服务器控件(ScriptManager 控件、UpdatePanel 控件和 Timer 控件)按固定的时间间隔更新部分网页。通过将这些控件添加到网页上,可消除在每次回发时刷新整个页面的需要。将只需更新 UpdatePanel 控件的内容。1、在 Microsoft Visual Studio 2005 或 Visual Web

dodream的专栏 1001

如何用VB.NET Timer控件按设定的间隔完成动作

开发者经常需要定期或在一个设定的时间间隔后完成某个特殊的动作。你可以用VB.NET的Timer控件实现这种功能。在这篇教程中,我将向你说明如何在应用程序中应用Timer控件。实例通过实例是了解Timer控件的最佳方法。按以下步骤操作: 在表中增加一个Timer控件(可在Components部分找到),取名为Timer1。 将它的Interval(时间间隔)

藤泽大叔VB2005/VB.NET自学笔记 4628

代码示例:使用AJAX.NET TIMER控件

示例ASPX页面代码: ...@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AJAXTIMESIMPLE._Default" %>DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://

bladebengbu的专栏 709

Timer控件概述

<br />Timer控件<br />在Web应用程序中常常要用到时间控制的功能,如在程序界面上显示当前时间,或者每隔多长时间触发一个事件等。为此,微软在ASP.NET Ajax中为我们提供了Timer控件,它可以轻松的实现这样的功能。<br /> <br />Timer控件概述<br />Timer控件负责以用户事先设置的时间间隔向服务器发送同步或者异步的请求。它经常和UpdatePanel结合起来以实现定时异步更新页面一部分的功能。另外,也可以使用这个控件定期“PostBack”整个页面。它的使用分两种

ysf871104的专栏 1372

在多个UpdatePanle中使用Timer控件

本文将使用Timer控件更新两个UpdatePanel控件,Timer控件将放在UpdatePanel控件的外面,并将它配置为UpdatePanel的触发器,翻译自官方文档。 主要内容    在多个UpdatePanel中使用Timer控件 1.添加一个新页面并切换到设计视图。2.如果页面没有包含ScriptManager控件,在工具箱中的AJAX Extensions标签

Lovingness  奶茶 658

ASP.NET AJAX入门系列(10):Timer控件简单使用

本文主要通过一个简单示例,让Web页面在一定的时间间隔内局部刷新,来学习一下ASP.NET AJAX中的服务端Timer控件的简单使用。 主要内容 Timer控件的简单使用 1.添加新页面并切换到设计视图。 2.如果页面没有包含ScriptManager控件,在工具箱的AJAX Extensions标签下双击ScriptManager控件添加到页面中。 3.单击S...

weixin_30576859的博客 100
上一篇: C#使用PrintDocument打印 多页 打印预览
下一篇: 正则表达式
Daqing
博客等级 码龄17年 28粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值