欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言:

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

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ì)象用于在間隔過后封送發(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ì)

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

效果演示

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

代碼邏輯

代碼比較簡單,我們重在學(xué)習(xí),學(xué)一下這個(gè)控件證明用,知道邏輯就可以了,代碼很簡單,兩個(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é)

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

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

相關(guān)文章

最新評(píng)論