C# Timer控件学习之使用Timer解决按钮幂等性问题

 更新时间:2022年10月16日 08:03:45   作者:IC00  
Timer控件又称定时器控件或计时器控件,该控件的主要作用是按一定的时间间隔周期性地触发一个名为Tick的事件,因此在该事件的代码中可以放置一些需要每隔一段时间重复执行的程序段,这篇文章主要介绍了关于C#使用Timer解决按钮幂等性问题的相关资料,需要的朋友可以参考下

前言:

Timer是一个定时器,作为C#开发Timer控件是我们用的比较多的一个控件,它的功能很简单,但是也是值得我们去学习的一个知识点,今天这篇文章就是想总结一下这个Timer控件,如果经常用还好,可以随时知道怎么写,对于我这种记性不好的同学呢,我就以这种形式去做一个小小的笔记,方便自己下一次使用和查询,内容比较简单,会的同学可以略过了!

Timer控件的属性

属性
AutoReset 获取或设置一个布尔值,该值指示 Timer 是否应只引发一次 Elapsed 事件((false) 或重复 (true))。 
CanRaiseEvents 获取一个指示组件是否可以引发事件的值。(继承自 Component) 
Container 获取包含 IContainer 的 Component。(继承自 Component) 
DesignMode 获取一个值,用以指示 Component 当前是否处于设计模式。(继承自 Component) 
Enabled 获取或设置一个值,该值指示 Timer 是否应引发 Elapsed 事件。 
Events 获取附加到此 Component 的事件处理程序的列表。(继承自 Component) 
Interval 获取或设置引发 Elapsed 事件的间隔(以毫秒为单位)。 
Site 获取或设置在设计模式中将 Timer 绑定到其容器的站点。 
SynchronizingObject 获取或设置对象,该对象用于在间隔过后封送发出的事件处理程序调用。 

Timer控件的方法

方法
BeginInit() 开始用于窗体或由其他组件使用的 Timer 的运行时初始化。 
Close() 释放由 Timer 占用的资源。 
CreateObjRef(Type) 创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。(继承自 MarshalByRefObject) 
Dispose() 释放由 Component 使用的所有资源。(继承自 Component) 
Dispose(Boolean) 释放由当前 Timer 使用的所有资源。 
EndInit() 结束用于窗体或由其他组件使用的 Timer 的运行时初始化。 
Equals(Object) 确定指定对象是否等于当前对象。(继承自 Object) 
GetHashCode() 作为默认哈希函数。(继承自 Object) 
GetLifetimeService() 检索控制此实例的生存期策略的当前生存期服务对象。(继承自 MarshalByRefObject) 
GetService(Type) 返回一个对象,该对象表示由 Component 或它的 Container 提供的服务。(继承自 Component) 
GetType() 获取类型

界面设计

简单的界面设计,我们点击界面上的按钮,看看如何使用Timer 解决按钮的幂等性问题,我们知道按钮我们多次点击会多次触发函数,如果连接下位机会发送多次同样的命令,显然这是不符合交互逻辑的,所以我们使用Timer的方式将按钮的状态改变一下,将按钮改为只读。

效果演示

点击按钮我们可以看到按钮变灰了,表示我们禁止它再触发,这样可以避免多次点击,不会产生幂等性问题,按钮二我们让它在后台两秒打印一遍,我们可以看到两秒触发一次这个函数。

代码逻辑

代码比较简单,我们重在学习,学一下这个控件证明用,知道逻辑就可以了,代码很简单,两个按钮两个定时器,将它们的触发函数看懂就可以实现了,按钮一的操作就是针对按钮重复提交而设计的。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
​
namespace Test929
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
​
        private void timer1_Tick(object sender, EventArgs e)
        {
            button1.Enabled = true;//将按钮的用户交互打开
        }
​
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;//打开Timer定时器按钮
            button1.Enabled = false;//将按钮的用户交互关闭这样可以实现,按钮不可点击两秒
            
        }
​
        private void button2_Click(object sender, EventArgs e)
        {
            timer2.Enabled = !timer2.Enabled;//打开定时器二的函数
        }
​
        private void timer2_Tick(object sender, EventArgs e)
        {
            Console.WriteLine("两秒执行一次这个函数");//打印这个话证明我们进入这个函数
        }
    } 
}

总结

这篇文章比较简单,只是简单的学习一下,对它有更多的认识,在有需求的时候最起码有路子,虽然很简单,但是也是可以学到东西的,我们学习了新的知识,对我们的知识储备及技术又有新的一点点的进步

到此这篇关于C# Timer控件学习之使用Timer解决按钮幂等性问题的文章就介绍到这了,更多相关C# Timer控件解决按钮幂等性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#更改tabControl选项卡颜色的方法

    C#更改tabControl选项卡颜色的方法

    这篇文章主要介绍了C#更改tabControl选项卡颜色的方法,结合实例形式较为详细的分析了C#更改tabControl选项卡颜色的的具体步骤与相关实现技巧,需要的朋友可以参考下
    2016-03-03
  • C#初始化数组的方法小结

    C#初始化数组的方法小结

    这篇文章主要介绍了C#初始化数组的方法,总结分析了C#声明与初始化一维数组及多维数组的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • 深入理解C#实现快捷键(系统热键)响应的方法

    深入理解C#实现快捷键(系统热键)响应的方法

    本篇文章是对使用C#实现快捷键(系统热键)响应的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 算法基础之算法设计与分析

    算法基础之算法设计与分析

    这篇文章主要介绍了算法基础之算法设计与分析,贪心算法是一种解决优化问题的算法设计方法,其核心思想是在每一步选择当前状态下的最优解,从而希望最终达到全局最优解,需要的朋友可以参考下
    2023-10-10
  • Unity Shader实现模糊效果

    Unity Shader实现模糊效果

    这篇文章主要为大家详细介绍了Unity Shader实现模糊效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • C#中int[][]与int[,]的使用与区别

    C#中int[][]与int[,]的使用与区别

    本文主要介绍了C#中int[][]与int[,]的使用与区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Unity UGUI教程之实现滑页效果

    Unity UGUI教程之实现滑页效果

    使用UGUI提供的ScrollRect和ScrollBar组件实现基本滑动以及自己控制每次移动一页来达到滑页的效果。具体实现思路请参考下本教程
    2016-04-04
  • C#使用iTextSharp添加PDF水印

    C#使用iTextSharp添加PDF水印

    这篇文章主要为大家详细介绍了C#使用iTextSharp添加PDF水印的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • c# 如何用组合替代继承

    c# 如何用组合替代继承

    这篇文章主要介绍了c# 如何用组合替代继承,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-02-02
  • C#实现创建标签PDF文件的示例代码

    C#实现创建标签PDF文件的示例代码

    标签PDF文件包含描述文档结构和各种文档元素顺序的元数据,是一种包含后端提供的可访问标记,管理阅读顺序和文档内容表示的逻辑结构的PDF文件。本文将用C#实现创建标签PDF文件,需要的可以参考一下
    2022-08-08

最新评论