最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#?Timer控件學(xué)習(xí)之使用Timer解決按鈕冪等性問(wèn)題

 更新時(shí)間:2022年10月16日 08:03:45   作者:IC00  
Timer控件又稱定時(shí)器控件或計(jì)時(shí)器控件,該控件的主要作用是按一定的時(shí)間間隔周期性地觸發(fā)一個(gè)名為Tick的事件,因此在該事件的代碼中可以放置一些需要每隔一段時(shí)間重復(fù)執(zhí)行的程序段,這篇文章主要介紹了關(guān)于C#使用Timer解決按鈕冪等性問(wèn)題的相關(guān)資料,需要的朋友可以參考下

前言:

Timer是一個(gè)定時(shí)器,作為C#開發(fā)Timer控件是我們用的比較多的一個(gè)控件,它的功能很簡(jiǎn)單,但是也是值得我們?nèi)W(xué)習(xí)的一個(gè)知識(shí)點(diǎn),今天這篇文章就是想總結(jié)一下這個(gè)Timer控件,如果經(jīng)常用還好,可以隨時(shí)知道怎么寫,對(duì)于我這種記性不好的同學(xué)呢,我就以這種形式去做一個(gè)小小的筆記,方便自己下一次使用和查詢,內(nèi)容比較簡(jiǎn)單,會(huì)的同學(xué)可以略過(guò)了!

Timer控件的屬性

屬性
AutoReset 獲取或設(shè)置一個(gè)布爾值,該值指示 Timer 是否應(yīng)只引發(fā)一次 Elapsed 事件((false) 或重復(fù) (true))。 
CanRaiseEvents 獲取一個(gè)指示組件是否可以引發(fā)事件的值。(繼承自 Component) 
Container 獲取包含 IContainer 的 Component。(繼承自 Component) 
DesignMode 獲取一個(gè)值,用以指示 Component 當(dāng)前是否處于設(shè)計(jì)模式。(繼承自 Component) 
Enabled 獲取或設(shè)置一個(gè)值,該值指示 Timer 是否應(yīng)引發(fā) Elapsed 事件。 
Events 獲取附加到此 Component 的事件處理程序的列表。(繼承自 Component) 
Interval 獲取或設(shè)置引發(fā) Elapsed 事件的間隔(以毫秒為單位)。 
Site 獲取或設(shè)置在設(shè)計(jì)模式中將 Timer 綁定到其容器的站點(diǎn)。 
SynchronizingObject 獲取或設(shè)置對(duì)象,該對(duì)象用于在間隔過(guò)后封送發(fā)出的事件處理程序調(diào)用。 

Timer控件的方法

方法
BeginInit() 開始用于窗體或由其他組件使用的 Timer 的運(yùn)行時(shí)初始化。 
Close() 釋放由 Timer 占用的資源。 
CreateObjRef(Type) 創(chuàng)建一個(gè)對(duì)象,該對(duì)象包含生成用于與遠(yuǎn)程對(duì)象進(jìn)行通信的代理所需的全部相關(guān)信息。(繼承自 MarshalByRefObject) 
Dispose() 釋放由 Component 使用的所有資源。(繼承自 Component) 
Dispose(Boolean) 釋放由當(dāng)前 Timer 使用的所有資源。 
EndInit() 結(jié)束用于窗體或由其他組件使用的 Timer 的運(yùn)行時(shí)初始化。 
Equals(Object) 確定指定對(duì)象是否等于當(dāng)前對(duì)象。(繼承自 Object) 
GetHashCode() 作為默認(rèn)哈希函數(shù)。(繼承自 Object) 
GetLifetimeService() 檢索控制此實(shí)例的生存期策略的當(dāng)前生存期服務(wù)對(duì)象。(繼承自 MarshalByRefObject) 
GetService(Type) 返回一個(gè)對(duì)象,該對(duì)象表示由 Component 或它的 Container 提供的服務(wù)。(繼承自 Component) 
GetType() 獲取類型

界面設(shè)計(jì)

簡(jiǎn)單的界面設(shè)計(jì),我們點(diǎn)擊界面上的按鈕,看看如何使用Timer 解決按鈕的冪等性問(wèn)題,我們知道按鈕我們多次點(diǎn)擊會(huì)多次觸發(fā)函數(shù),如果連接下位機(jī)會(huì)發(fā)送多次同樣的命令,顯然這是不符合交互邏輯的,所以我們使用Timer的方式將按鈕的狀態(tài)改變一下,將按鈕改為只讀。

效果演示

點(diǎn)擊按鈕我們可以看到按鈕變灰了,表示我們禁止它再觸發(fā),這樣可以避免多次點(diǎn)擊,不會(huì)產(chǎn)生冪等性問(wèn)題,按鈕二我們讓它在后臺(tái)兩秒打印一遍,我們可以看到兩秒觸發(fā)一次這個(gè)函數(shù)。

代碼邏輯

代碼比較簡(jiǎn)單,我們重在學(xué)習(xí),學(xué)一下這個(gè)控件證明用,知道邏輯就可以了,代碼很簡(jiǎn)單,兩個(gè)按鈕兩個(gè)定時(shí)器,將它們的觸發(fā)函數(shù)看懂就可以實(shí)現(xiàn)了,按鈕一的操作就是針對(duì)按鈕重復(fù)提交而設(shè)計(jì)的。

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定時(shí)器按鈕
            button1.Enabled = false;//將按鈕的用戶交互關(guān)閉這樣可以實(shí)現(xiàn),按鈕不可點(diǎn)擊兩秒
            
        }
?
        private void button2_Click(object sender, EventArgs e)
        {
            timer2.Enabled = !timer2.Enabled;//打開定時(shí)器二的函數(shù)
        }
?
        private void timer2_Tick(object sender, EventArgs e)
        {
            Console.WriteLine("兩秒執(zhí)行一次這個(gè)函數(shù)");//打印這個(gè)話證明我們進(jìn)入這個(gè)函數(shù)
        }
    } 
}

總結(jié)

這篇文章比較簡(jiǎn)單,只是簡(jiǎn)單的學(xué)習(xí)一下,對(duì)它有更多的認(rèn)識(shí),在有需求的時(shí)候最起碼有路子,雖然很簡(jiǎn)單,但是也是可以學(xué)到東西的,我們學(xué)習(xí)了新的知識(shí),對(duì)我們的知識(shí)儲(chǔ)備及技術(shù)又有新的一點(diǎn)點(diǎn)的進(jìn)步

到此這篇關(guān)于C# Timer控件學(xué)習(xí)之使用Timer解決按鈕冪等性問(wèn)題的文章就介紹到這了,更多相關(guān)C# Timer控件解決按鈕冪等性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#與PLC通訊的實(shí)現(xiàn)代碼

    C#與PLC通訊的實(shí)現(xiàn)代碼

    這篇文章主要介紹了C#與PLC通訊的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • C#中重載重寫和覆蓋的定義與區(qū)別

    C#中重載重寫和覆蓋的定義與區(qū)別

    今天小編就為大家分享一篇關(guān)于C#中重載重寫和覆蓋的定義與區(qū)別,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • C#byte數(shù)組傳入C操作方法

    C#byte數(shù)組傳入C操作方法

    在本篇內(nèi)容中小編給大家分享了關(guān)于C#byte數(shù)組傳入C操作方法以及相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-02-02
  • C#動(dòng)態(tài)對(duì)象(dynamic)詳解(實(shí)現(xiàn)方法和屬性的動(dòng)態(tài))

    C#動(dòng)態(tài)對(duì)象(dynamic)詳解(實(shí)現(xiàn)方法和屬性的動(dòng)態(tài))

    下面小編就為大家?guī)?lái)一篇C#動(dòng)態(tài)對(duì)象(dynamic)詳解(實(shí)現(xiàn)方法和屬性的動(dòng)態(tài))。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • C#實(shí)現(xiàn)解析JSON的示例詳解

    C#實(shí)現(xiàn)解析JSON的示例詳解

    這篇文章主要為大家詳細(xì)介紹了使用C#實(shí)現(xiàn)解析JSON的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • 詳解c# 協(xié)變和逆變

    詳解c# 協(xié)變和逆變

    這篇文章主要介紹了c# 協(xié)變和逆變的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下
    2020-11-11
  • C# 使用Serilog日志框架的方法

    C# 使用Serilog日志框架的方法

    Serilog是一款配置方便,使用靈活的日志框架,這篇文章主要介紹了C# 使用Serilog日志框架,需要的朋友可以參考下
    2023-11-11
  • C# TabControl控件中TabPage選項(xiàng)卡切換時(shí)的觸發(fā)事件問(wèn)題

    C# TabControl控件中TabPage選項(xiàng)卡切換時(shí)的觸發(fā)事件問(wèn)題

    這篇文章主要介紹了C# TabControl控件中TabPage選項(xiàng)卡切換時(shí)的觸發(fā)事件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • C#實(shí)現(xiàn)文件上傳與下載功能實(shí)例

    C#實(shí)現(xiàn)文件上傳與下載功能實(shí)例

    本篇文章主要介紹了C#實(shí)現(xiàn)文件上傳與下載,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。
    2016-12-12
  • Unity shader實(shí)現(xiàn)多光源漫反射以及陰影

    Unity shader實(shí)現(xiàn)多光源漫反射以及陰影

    這篇文章主要為大家詳細(xì)介紹了shader實(shí)現(xiàn)多光源漫反射以及陰影,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07

最新評(píng)論

孝义市| 临夏市| 商城县| 曲阳县| 佛山市| 庆元县| 龙井市| 开化县| 舟山市| 陕西省| 天全县| 禄丰县| 五华县| 南昌市| 舟山市| 富蕴县| 女性| 澄迈县| 彭阳县| 织金县| 克拉玛依市| 平陆县| 兴宁市| 汝南县| 奎屯市| 二连浩特市| 宁河县| 静安区| 呼和浩特市| 阿合奇县| 大悟县| 泗阳县| 抚松县| 巢湖市| 武强县| 新宁县| 通许县| 安西县| 股票| 延吉市| 莱阳市|