Gereksinimler: Core 6 ASP.NET yı kullanarak düzenli olarak veri elde etmek için anket yapacak yeni bir arka plan hizmeti oluşturun ve kullanınSystem.Timers.TimerZamanlayıcı anketi, aynı anda tekrarlanan yürütmeyi önlemek için ek Monitor kodu eklemek, iş ihtiyaçlarımı karşılamasa da yeterince şık değil ve .NET 6'daki yeni PeriodicTimer zamanlayıcısını kullanmak iş ihtiyaçlarımı daha iyi karşılayabiliyor.
Bir geliştirici olarak, daha önce .NET'te zamanlayıcı kullanmış olabilirsiniz. Bugün .NET'te farklı bir amaca hizmet eden birçok tür zamanlayıcı vardır. Şöyle:
- System.Threading.Timer
- System.Timers.Timer
- System.Windows.Forms.Timer
- System.Web.UI.Timer
- System.Windows.Threading.DispatcherTimer
.NET 6'da yeni bir Zamanlayıcı - System.Threading.PeriodicTimer tanıtıldı ve önceki Zamanlayıcılardan en büyük fark, yeni Periyodik Zamanlayıcının olay işlemesinin daha uygun ve asenkron şekilde kullanılabilmesi, geri çağrı mekanizmasını ortadan kaldırarak kullanım karmaşıklığını azaltmasıdır.
.NET 6, PeriodicTimer adı verilen yeni bir zamanlayıcı türü tanıttı. PeriodicTimer'ın temel amacı, geri çağrı kullanımından kaçınmaktır.Geri çağrılardan kaçınmak, uzun vadeli işlemlerde ortaya çıkabilecek bellek sızıntılarıyla uğraşmamızı sağlar, ve bu yöntemi geri çağrılarda kullanmak için senkron yerine asenkron kod yazabiliriz. Mevcut zamanlayıcı tipiyle uğraşıyor olabilirsinizBir diğer sorun ise örtüşen geri dönüş çağrılarının üst üste bindirmesidir。 Geri çağrı örtüşme senaryoları için kod yazmıyorsanız, uygulamanızda beklenmedik davranışlar görebilirsiniz.
yaratmakPeriodicTimerÖrnek çok basit, sağlamanız gereken tek parametre nokta değeri, kod şöyle:
Asenkron Zamanlama Arka Plan Görev Kodu:
(Son)
|