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

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

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

前言:

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

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

不管以前這樣設(shè)計(jì)的原因,現(xiàn)在.NET 6又為我們?cè)黾恿艘粋€(gè)新Timer,??PeriodicTimer??。

這又是為什么呢?

一、Demo

與其他Timer需要?jiǎng)?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的使用方式如下:

//間隔時(shí)間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í)行;并且一次只有一個(gè)線程可以執(zhí)行。

另外,你可以控制?停止PeriodicTimer計(jì)時(shí)?。示例代碼如下:

//創(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");
? ? }
}

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

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

示例代碼如下:

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方法來停止計(jì)時(shí),

示例代碼如下:

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è)計(jì)PeriodicTimer的原因,可以歸結(jié)為:

  • 用于異步上下文
  • 一次僅由一個(gè)消費(fèi)者使用?

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

相關(guān)文章

  • 在NET?Core?中獲取?CPU?使用率

    在NET?Core?中獲取?CPU?使用率

    這篇文章我們分享一種如何在?.NETCore?中獲取?CPU使用率的方法,?它所報(bào)告的這個(gè)值和?任務(wù)管理器?中報(bào)告的?CPU?使用值?差不多是一致的,下面來看看文中的具體詳細(xì)介紹吧
    2022-01-01
  • Oracle中TO_DATE格式介紹

    Oracle中TO_DATE格式介紹

    Oracle中TO_DATE格式介紹;可供需求的朋友參考
    2012-11-11
  • 利用.NET 開發(fā)服務(wù)器 應(yīng)用管理工具

    利用.NET 開發(fā)服務(wù)器 應(yīng)用管理工具

    這篇文章主要介紹如何利用.NET 開發(fā)一個(gè)應(yīng)用管理工具的服務(wù)器,文章回先聊背景接著其是喲美好方法,需要的的小伙伴可以參考一下小面文章的具體內(nèi)容
    2021-10-10
  • 利用ASP.NET技術(shù)動(dòng)態(tài)生成HTML頁面

    利用ASP.NET技術(shù)動(dòng)態(tài)生成HTML頁面

    利用ASP.NET技術(shù)動(dòng)態(tài)生成HTML頁面...
    2006-07-07
  • ABP入門系列應(yīng)用BootstrapTable表格插件

    ABP入門系列應(yīng)用BootstrapTable表格插件

    Bootstrap table是一個(gè)開源的輕量級(jí)功能非常豐富的前端表格插件。下面通過本文給大家介紹ABP入門系列應(yīng)用BootstrapTable表格插件,感興趣的朋友一起學(xué)習(xí)吧
    2017-03-03
  • .Net Core HttpClient處理響應(yīng)壓縮詳細(xì)

    .Net Core HttpClient處理響應(yīng)壓縮詳細(xì)

    .Net Core作為后起之秀直接將HttpClient扶正,并且在此基礎(chǔ)上改良了HttpClientFactory,接下來我們就來探究一下在.Net Core中使用HttpClient處理響應(yīng)壓縮的機(jī)制。,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • asp.net mvc路由篇 如何找到 IHttpHandler方法介紹

    asp.net mvc路由篇 如何找到 IHttpHandler方法介紹

    學(xué)習(xí)是使用asp.net已經(jīng)有很長一段時(shí)間了,現(xiàn)在就來分析一下mvc的整過過程吧。個(gè)人計(jì)劃寫一個(gè)mvc系列的博文,僅從源代碼的角度來分析mvc。在接觸mvc時(shí)我們一定會(huì)經(jīng)歷路由,那么路由這東東是怎么搞出來的啊
    2012-11-11
  • 為什么ASP.NET Core 數(shù)據(jù)庫連接串的值和appsettings.json配的不一樣?

    為什么ASP.NET Core 數(shù)據(jù)庫連接串的值和appsettings.json配的不一樣?

    這篇文章主要介紹了為什么數(shù)據(jù)庫連接串的值和appsettings.json配的不一樣?下面我們就帶著疑問閱讀下文,需要的小伙伴可以參考一下,希望對(duì)你有所幫助
    2022-02-02
  • 詳解如何使用Net將HTML簡歷導(dǎo)出為PDF格式

    詳解如何使用Net將HTML簡歷導(dǎo)出為PDF格式

    這篇文章主要為大家介紹了詳解如何使用Net將HTML簡歷導(dǎo)出為PDF格式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Net內(nèi)存管理五大基礎(chǔ)

    Net內(nèi)存管理五大基礎(chǔ)

    這篇文章主要給大家分享Net內(nèi)存管理五大基礎(chǔ)內(nèi)容,文章講圍繞Net內(nèi)存管理詳細(xì)介紹文章內(nèi)容,感興趣的朋友可以參考一下,希望對(duì)你有所幫助
    2021-10-10

最新評(píng)論