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

.NET 6新特性試用Timer類之PeriodicTimer?

 更新時間:2022年03月14日 14:17:35   作者:My IO  
這篇文章主要介紹了.NET 6新特性試用Timer類之PeriodicTimer,PeriodicTimer與其他Timer需要創(chuàng)建事件回調(diào)不同,下,下面文章詳細(xì)介紹PeriodicTimer的使用方式,需要的朋友可以參考一下

前言:

在.NET中,已經(jīng)存在了5個Timer類:

System.Threading.Timer
System.Timers.Timer
System.Web.UI.Timer
System.Windows.Forms.Timer
System.Windows.Threading.DispatcherTimer

不管以前這樣設(shè)計的原因,現(xiàn)在.NET 6又為我們增加了一個新Timer,??PeriodicTimer??。

這又是為什么呢?

一、Demo

與其他Timer需要創(chuàng)建事件回調(diào)不同:

Timer timer = new Timer(delegate
{
? ? Thread.Sleep(3000);
? ? Console.WriteLine($"Timer Thread: {Thread.CurrentThread.ManagedThreadId}");
? ? Console.WriteLine($"{DateTime.Now.Second} Timer tick");
},null,0,1000
);

PeriodicTimer的使用方式如下:

//間隔時間1秒
using (var timer = new PeriodicTimer(TimeSpan.FromSeconds(1)))
{
? ? //在到達(dá)指定周期后執(zhí)行方法
? ? while (await timer.WaitForNextTickAsync())
? ? {
? ? ? ? await Task.Delay(3000);
?
? ? ? ? Console.WriteLine($"Timer Thread: {Thread.CurrentThread.ManagedThreadId}");
? ? ? ? Console.WriteLine($"{DateTime.Now.Second} PeriodicTimer tick");
? ? }
}

?從??await??關(guān)鍵字可以看出,PeriodicTimer用于異步執(zhí)行;并且一次只有一個線程可以執(zhí)行。

另外,你可以控制?停止PeriodicTimer計時?。示例代碼如下:

//創(chuàng)建CancellationTokenSource,指定在3秒后將被取消
var cts = new CancellationTokenSource(TimeSpan.FromSeconds(3));

using (var timer = new PeriodicTimer(TimeSpan.FromSeconds(1)))
{
? ? while (await timer.WaitForNextTickAsync(cts.Token))
? ? {
? ? ? ? Console.WriteLine($"{DateTime.Now.Second} PeriodicTimer tick");
? ? }
}

需要注意的是,這會引發(fā)??OperationCancelled??異常,你需要捕獲該異常,然后根據(jù)需要進(jìn)行處理:

當(dāng)然,你也可以通過主動取消CancellationTokenSource,來停止PeriodicTimer計時,

示例代碼如下:

var cts = new CancellationTokenSource();

using (var timer = new PeriodicTimer(TimeSpan.FromSeconds(1)))
{
? ? int count = 0;
? ? while (await timer.WaitForNextTickAsync(cts.Token))
? ? {
? ? ? ? if (++count == 3)
? ? ? ? {
? ? ? ? ? ? //執(zhí)行3次后取消
? ? ? ? ? ? cts.Cancel();
? ? ? ? }
? ? ? ? Console.WriteLine($"{DateTime.Now.Second} PeriodicTimer tick");
? ? }
}

這次換成了??TaskCancelled??異常:

如果,你不想拋出異常,則可以用PeriodicTimer.Dispose方法來停止計時,

示例代碼如下:

using (var timer = new PeriodicTimer(TimeSpan.FromSeconds(1)))
{
? ? int count = 0;
? ? while (await timer.WaitForNextTickAsync())
? ? {
? ? ? ? if (++count == 3)
? ? ? ? {
? ? ? ? ? ? //執(zhí)行3次后取消
? ? ? ? ? ? timer.Dispose();
? ? ? ? }
? ? ? ? Console.WriteLine($"{DateTime.Now.Second} PeriodicTimer tick");
? ? }
}

結(jié)論:

通過上面的代碼,可以了解到,設(shè)計PeriodicTimer的原因,可以歸結(jié)為:

  • 用于異步上下文
  • 一次僅由一個消費者使用?

 到此這篇關(guān)于.NET 6新特性試用Timer類之PeriodicTimer 的文章就介紹到這了,更多相關(guān)Timer類之PeriodicTimer 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • ASP.NET Core 中間件的使用之全局異常處理機(jī)制

    ASP.NET Core 中間件的使用之全局異常處理機(jī)制

    我們今天這篇文章就來說說代碼異常問題怎么快速定位,減少不必要的時間浪費。異常是一種運(yùn)行時錯誤,當(dāng)異常沒有得到適當(dāng)?shù)奶幚恚芸赡軙?dǎo)致你的程序意外終止。下面雄安邊將詳細(xì)介紹,需要的朋友可以參考下
    2021-09-09
  • 修改 asp.net core 5 程序的默認(rèn)端口號

    修改 asp.net core 5 程序的默認(rèn)端口號

    這篇文章主要介紹了修改 asp.net core 5 程序的默認(rèn)端口號,我們知道可以通過修改 launchSettings.json 文件中的端口號來實現(xiàn)端口切換,下面來看看具體的修改過程吧
    2022-01-01
  • .NET 6中使用DateOnly和TimeOnly類型

    .NET 6中使用DateOnly和TimeOnly類型

    這篇文章主要介紹了.NET 6中使用DateOnly和TimeOnly類型,在.NET 6(preview 4)中引入了兩個期待已久的類型,將作為核心庫的一部分。DateOnly和TimeOnly允許開發(fā)人員表示DateTime的日期或時間部分,下文具體內(nèi)容,需要的小伙伴可以參考一下
    2022-01-01
  • asp.net core使用DevExtreme20將int列轉(zhuǎn)為checkbox方法示例

    asp.net core使用DevExtreme20將int列轉(zhuǎn)為checkbox方法示例

    這篇文章主要為大家介紹了asp.net core使用DevExtreme20將int列轉(zhuǎn)為checkbox方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • .Net Core 之AutoFac的使用

    .Net Core 之AutoFac的使用

    本文簡單介紹了AutoFac的基本使用以及在asp .net core中的應(yīng)用,文中通過代碼講解相關(guān)知識非常的詳細(xì),對大家的學(xué)習(xí)或工作都很有幫助,感興趣的小伙伴可以參考一下這篇文章
    2021-09-09
  • .NET提取?Thread?中返回值詳情

    .NET提取?Thread?中返回值詳情

    這篇文章主要介紹了.NET提取?Thread?中返回值詳情,關(guān)于如何獲取?Thread?中的返回值,不同的版本有不同的解決方案。需要的朋友可以參考一下
    2022-01-01
  • .NET 6 即將到來的新特性  隱式命名空間引用

    .NET 6 即將到來的新特性 隱式命名空間引用

    ASP.NET 現(xiàn)在我們還是需要手動加命名空間引用,在以后的版本中可能就不需要手動加命名空間的引用了,本文就來介紹.NET 6即將到來的新特性--隱式命名空間引用,,需要的朋友可以參考下面文章內(nèi)容
    2021-09-09
  • .NET新能源汽車鋰電池檢測程序UI掛死問題分析

    .NET新能源汽車鋰電池檢測程序UI掛死問題分析

    這篇文章主要為大家介紹了.NET新能源汽車鋰電池檢測程序UI掛死問題分析?,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • ASP.NET Core WebSocket集群實現(xiàn)思路詳解

    ASP.NET Core WebSocket集群實現(xiàn)思路詳解

    這篇文章主要為大家介紹了ASP.NET Core WebSocket集群實現(xiàn)思路詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 用CSS實現(xiàn)圖片傾斜 只支持IE

    用CSS實現(xiàn)圖片傾斜 只支持IE

    用CSS實現(xiàn)圖片傾斜 只支持IE...
    2007-11-11

最新評論

都江堰市| 泰宁县| 剑阁县| 清涧县| 大余县| 门源| 东城区| 龙胜| 龙门县| 绥宁县| 恩平市| 河东区| 黄龙县| 商洛市| 乐至县| 新龙县| 江山市| 那曲县| 邻水| 印江| 宁乡县| 镶黄旗| 吴堡县| 新郑市| 乌鲁木齐市| 丰原市| 长春市| 屯昌县| 涿鹿县| 北票市| 庆安县| 四会市| 日土县| 吉木萨尔县| 苏尼特左旗| 永安市| 东安县| 英德市| 麟游县| 昌吉市| 雅江县|