国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C#】當(dāng)重復(fù)使用一段代碼倒計時時,使用靜態(tài)類和靜態(tài)方法,實現(xiàn)簡單的this擴(kuò)展方法

這篇具有很好參考價值的文章主要介紹了【C#】當(dāng)重復(fù)使用一段代碼倒計時時,使用靜態(tài)類和靜態(tài)方法,實現(xiàn)簡單的this擴(kuò)展方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

歡迎來到《小5講堂》
大家好,我是全棧小5。
這是《C#》序列文章,每篇文章將以博主理解的角度展開講解,
特別是針對知識點的概念進(jìn)行敘說,大部分文章將會對這些概念進(jìn)行實際例子驗證,以此達(dá)到加深對知識點的理解和掌握。
溫馨提示:博主能力有限,理解水平有限,若有不對之處望指正!

【C#】當(dāng)重復(fù)使用一段代碼倒計時時,使用靜態(tài)類和靜態(tài)方法,實現(xiàn)簡單的this擴(kuò)展方法,C#,c#,面向編程特性

前言

上篇文章已經(jīng)通過封裝方法的形式,實現(xiàn)了倒計時公共代碼的封裝。
通過代碼的封裝,不僅代碼減少了,也提高了代碼的可維護(hù)性,一舉多得,何樂不為。
這也是編程最有魅力的地方,隨著編碼經(jīng)驗的增多以及不停的學(xué)習(xí),就會滿滿理解和領(lǐng)悟一些知識點,理論以及設(shè)計思想。
【C#】當(dāng)重復(fù)使用一段代碼倒計時時,使用普通類和靜態(tài)方法,實現(xiàn)簡單的封裝性、可擴(kuò)展性、可維護(hù)性

優(yōu)化前

優(yōu)化前,是通過在每個窗體添加一段倒計時異步方法代碼,然后窗體界面添加一個label標(biāo)簽用于顯示當(dāng)前實時時間。

界面

【C#】當(dāng)重復(fù)使用一段代碼倒計時時,使用靜態(tài)類和靜態(tài)方法,實現(xiàn)簡單的this擴(kuò)展方法,C#,c#,面向編程特性
【C#】當(dāng)重復(fù)使用一段代碼倒計時時,使用靜態(tài)類和靜態(tài)方法,實現(xiàn)簡單的this擴(kuò)展方法,C#,c#,面向編程特性

代碼

/// <summary>
/// 倒計時
/// </summary>
private void CurrentTime()
{
    Task.Run(() =>
    {
        while (true)
        {
            lbTime.Text = $"當(dāng)前時間:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}";

            Thread.Sleep(1000);
        }
    });
}

優(yōu)化后

這次優(yōu)化是通過靜態(tài)類靜態(tài)方法實現(xiàn),并且是使用this進(jìn)行擴(kuò)展。
同時把控件初始化位置以及高寬度大小設(shè)置成獨立的變量成員,可對其進(jìn)行賦值,否則使用默認(rèn)值。

界面

【C#】當(dāng)重復(fù)使用一段代碼倒計時時,使用靜態(tài)類和靜態(tài)方法,實現(xiàn)簡單的this擴(kuò)展方法,C#,c#,面向編程特性

代碼

  • 封裝方法
/// <summary>
/// 靜態(tài)類擴(kuò)展方法
/// 對于靜態(tài)類,方法必須是靜態(tài)屬性
/// </summary>
public static class TimeLabelExtend
{
    public static int X = 50;
    public static int Y = 50;
    public static int Width = 179;
    public static int Height = 15;
    public static void TimeLabel(this Form targetForm)
    {
        // 擴(kuò)展方法必須在[非泛型][靜態(tài)類]中定義
        Label label = new Label();
        label.Location = new Point() { X = X, Y = Y };
        label.Width = Width;
        label.Height = Height;

        targetForm.Controls.Add(label);

        Task.Run(() => {

            while (true)
            {
                label.Text = $"當(dāng)前時間:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}";
                Thread.Sleep(1000);
            }
        });
    }
}
  • 窗體1
private void Test1_Load(object sender, EventArgs e)
{
    //TimeLabel.Time(this, 50, 50);
    this.TimeLabel();
}

private void button1_Click(object sender, EventArgs e)
{
    Test2 test2 = new Test2();
    test2.Show();
}
  • 窗體2
private void Test2_Load(object sender, EventArgs e)
{
    //TimeLabel.Time(this, 50, 50);
    this.TimeLabel();
}

常見情況

報錯提示

在窗體異步方法里操作主線程控件時,會提示錯誤,線程間操作無限:從不不是創(chuàng)建控件"lbTime"的線程訪問它。
【C#】當(dāng)重復(fù)使用一段代碼倒計時時,使用靜態(tài)類和靜態(tài)方法,實現(xiàn)簡單的this擴(kuò)展方法,C#,c#,面向編程特性

解決方法

可在構(gòu)造函數(shù)里增加下面代碼

/// <summary>
/// 構(gòu)造函數(shù)
/// </summary>
public TestTemp()
{
    InitializeComponent();
    CheckForIllegalCrossThreadCalls = false;
}

屬性作用

CheckForIllegalCrossThreadCalls 可以拆分成 4 個詞:
1.Check:檢查
2.For:為了
3.Illegal:非法的
4.CrossThreadCalls:跨線程調(diào)用
整體意思是:為了檢查跨線程調(diào)用是否非法。

C# 中的 CheckForIllegalCrossThreadCalls 是一個屬性,用于檢查在多線程編程中是否存在潛在的跨線程調(diào)用問題。
它可以幫助開發(fā)人員在開發(fā)過程中更好地處理線程間的通信。

在 C# 中,UI 線程是用于處理用戶界面操作的主線程,而其他操作(如網(wǎng)絡(luò)請求、計算等)通常需要在后臺線程中執(zhí)行。
然而,直接在后臺線程中訪問 UI 控件是不安全的,可能會導(dǎo)致不可預(yù)測的結(jié)果和操作系統(tǒng)錯誤。
CheckForIllegalCrossThreadCalls 屬性的作用是在調(diào)試模式下,檢測程序是否存在不安全的跨線程調(diào)用。

當(dāng)該屬性設(shè)置為 true 時,在出現(xiàn)跨線程調(diào)用時,會引發(fā)一個異常,以提醒開發(fā)人員進(jìn)行相應(yīng)的處理。
當(dāng)屬性設(shè)置為 false 時,不會引發(fā)異常,但仍然可能導(dǎo)致不安全的操作。

這個屬性主要用于幫助開發(fā)人員及時發(fā)現(xiàn)并修復(fù)由于線程之間的錯誤調(diào)用而導(dǎo)致的問題。
它可以提高應(yīng)用程序的穩(wěn)定性和可靠性,避免潛在的線程安全問題。
要注意的是,這個屬性只在調(diào)試模式下起作用,在發(fā)布版本中不會進(jìn)行檢查。

this擴(kuò)展

在 C# 中,this 關(guān)鍵字通常用于指代當(dāng)前對象。而擴(kuò)展方法允許我們向現(xiàn)有類型(包括 .NET 框架中的類型)添加新的方法,而無需修改原始類型的定義。
將 this 作為參數(shù)前綴的方法稱為擴(kuò)展方法,它允許我們在已有的類型上創(chuàng)建新的方法,而不必對原始類型進(jìn)行派生、修改或重新編譯。這使得我們可以將自定義的方法添加到以前不能修改的類中,從而擴(kuò)展其功能。

  • 比如上面封裝的代碼
public static void TimeLabel(this Form targetForm)

溫故而知新,不同階段重溫知識點,會有不一樣的認(rèn)識和理解,博主將鞏固一遍知識點,并以實踐方式和大家分享,若能有所幫助和收獲,這將是博主最大的創(chuàng)作動力和榮幸。也期待認(rèn)識更多優(yōu)秀新老博主。文章來源地址http://www.zghlxwxcb.cn/news/detail-803081.html

到了這里,關(guān)于【C#】當(dāng)重復(fù)使用一段代碼倒計時時,使用靜態(tài)類和靜態(tài)方法,實現(xiàn)簡單的this擴(kuò)展方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 幫我寫一個跨年html倒計時代碼,達(dá)到預(yù)定時間切換為放煙花

    以下是一個簡單的 HTML 倒計時代碼,在跨年時會切換為放煙花的效果: 上面的

    2024年02月03日
    瀏覽(28)
  • 基于FPGA的倒計時交通信號燈系統(tǒng)(使用quartusII)

    基于FPGA的倒計時交通信號燈系統(tǒng)(使用quartusII)

    好久沒更新,轉(zhuǎn)眼大二下了,去年我的城市經(jīng)歷新冠疫情,我自己也沉迷于某csgo游戲開擺500小時,終于在上個月醒悟,正式開始fpga的學(xué)習(xí),是跟這實驗室的一位帶工程師學(xué)習(xí)的,話不多說開始。 主要看著B站開源騷客和小梅哥的視頻,開源騷客的視頻我看完了,最近在看小梅

    2024年02月11日
    瀏覽(26)
  • 使用css3實現(xiàn)一個超浪漫的新年倒計時

    使用css3實現(xiàn)一個超浪漫的新年倒計時

    新年快到了,使用css3實現(xiàn)一個超浪漫的新年倒計時吧,希望大家喜歡。 目錄 1 實現(xiàn)思路? 2 實現(xiàn)浪漫的心形背景 3 布局小時分鐘和秒的區(qū)域 4、js倒計時? 5、然后就是將所得的小時、分鐘、秒對DOM進(jìn)行賦值? 6、每秒一更新? 7、補充知識點1- 倒計時為什么不寫1000 8、補充知識

    2024年02月03日
    瀏覽(25)
  • 藍(lán)橋杯倒計時 | 倒計時4天

    藍(lán)橋杯倒計時 | 倒計時4天

    作者????♂?:讓機器理解語言か 專欄??:藍(lán)橋杯倒計時沖刺 描述??:藍(lán)橋杯沖刺階段,一定要沉住氣,一步一個腳印,勝利就在前方! 寄語??:??沒有白走的路,每一步都算數(shù)!?? 題目描述 我們要求找出具有下列性質(zhì)數(shù)的個數(shù)(包含輸入的自然數(shù) n): 先輸入一個自

    2023年04月09日
    瀏覽(55)
  • uniapp中uview組件庫豐富的CountDown 倒計時使用方法

    uniapp中uview組件庫豐富的CountDown 倒計時使用方法

    目錄 #平臺差異說明 #基本使用 #設(shè)置是否顯示天,時,分,秒 #倒計時分隔符 #倒計時樣式 #倒計時執(zhí)行的時機 #如何獲取當(dāng)前倒計的秒數(shù) #API #Props #Events #Methods 該組件一般使用于某個活動的截止時間上,通過數(shù)字的變化,給用戶明確的時間感受,提示用戶進(jìn)行某一個行為操作

    2024年02月02日
    瀏覽(25)
  • 51單片機實現(xiàn)倒計時,按鍵控制倒計時

    51單片機實現(xiàn)倒計時,按鍵控制倒計時

    基于AT89C52的答辯倒計時。四個按鍵分別控制倒計時開始,暫停,時間加和減。剩下30S時蜂鳴器響,倒計時結(jié)束蜂鳴器響。 ?

    2024年02月07日
    瀏覽(33)
  • 多功能交通燈控制系統(tǒng)VHDL十字路口紅綠燈倒計時DE2-115開發(fā)板代碼

    多功能交通燈控制系統(tǒng)VHDL十字路口紅綠燈倒計時DE2-115開發(fā)板代碼

    名稱:多功能交通燈控制系統(tǒng)VHDL十字路口紅綠燈倒計時DE2-115開發(fā)板 軟件:Quartus II 語言:VHDL 代碼功能: 要求設(shè)計一個多功能交通燈控制系統(tǒng)。并進(jìn)行軟件仿真與硬件實現(xiàn)。要求做到? (1)主干道綠燈亮?xí)r,支干道紅燈亮,反之亦然,兩者交替允許通行,主干道每次放行60s,支干道每

    2024年02月04日
    瀏覽(52)
  • Flutter實現(xiàn)倒計時功能,秒數(shù)轉(zhuǎn)時分秒,然后倒計時

    Flutter實現(xiàn)倒計時功能,秒數(shù)轉(zhuǎn)時分秒,然后倒計時

    Flutter實現(xiàn)倒計時功能 發(fā)布時間:2023/05/12 本文實例為大家分享了Flutter實現(xiàn)倒計時功能的具體代碼,供大家參考,具體內(nèi)容如下 有一個需求,需要在頁面進(jìn)行顯示倒計時,倒計時結(jié)束后,做相應(yīng)的邏輯處理。 實現(xiàn)思路:在Flutter中,Timer.periodic提供了循環(huán)功能,查看函數(shù)定義:

    2024年02月13日
    瀏覽(48)
  • uniapp 手機驗證碼輸入框(隨機數(shù)、倒計時、隱藏手機號碼中間四位)可以直接使用

    uniapp 手機驗證碼輸入框(隨機數(shù)、倒計時、隱藏手機號碼中間四位)可以直接使用

    ? ?? ? ? 如鍵盤被隱藏,可直接點擊藍(lán)框彈出鍵盤,藍(lán)框就相當(dāng)于input的光標(biāo),驗證碼輸入錯誤之后會將字體以及邊框改為紅色,持續(xù)1.5s(可自行修改時間),然后清空數(shù)據(jù)。 實現(xiàn)思路: 創(chuàng)建六個正方形的view(使用for循環(huán)),然后創(chuàng)建一個數(shù)字input,最大輸入長度為六位(

    2024年02月16日
    瀏覽(26)
  • 51單片機通過計時器實現(xiàn)倒計時

    51單片機通過計時器實現(xiàn)倒計時

    軟件 : Keil5+Proteus7 元件 : AT89C51 * 1,7SEG-MPX2-CA * 1

    2024年02月16日
    瀏覽(118)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包