首頁 > 軟體

C# Timer控制元件學習之使用Timer解決按鈕冪等性問題

2022-10-18 14:01:42

前言:

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控制元件解決按鈕冪等性內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com