C# Quartz.NET kullanarak Zamanlanmış Görevler Oluşturmak
- Ayrıntılar
- Üst Kategori: Programcılık
- Kategori: C#
- Perşembe, 20 Ocak 2011 13:36 tarihinde oluşturuldu
- Super User tarafından yazıldı.
- Gösterim: 1060
Quartz.NET ile C# programlarımızda zamanlanmış görevler oluşturabiliyoruz. Gelişmiş fakat biraz karmaşık bir sınıf kütüphanesi gibi görünüyor. Dolayısıyla en iyisi bir örnekle deneyerek görmek.
Aşağıdaki örnekte,
1. Zamanlayıcı işlevi başlatılıyor.
2. Bir adet görev tanımı yapılıyor. IJob sınıfından türettiğimiz Gorev1 isimli bir sınıf aslında bu. Zamanı gelince bu sınıfın içindeki kodlar çalışacak.
3. Bir adet tetikleyici tanımı yapılıyor. Tetikleyicinin ilk başlama zamanı belirtiliyor. Ne zaman/hangi zamanlarda çalışacağı belirtiliyor. Bu örnekte 15 Aralık 2010 23:58:45 'de ilk defa başlayacağı, başladığı andan itibaren her 15 dakikada bir çalışacağı belirtiliyor. Yalnız dökümantasyonda varolan StartTime metodunu göremediğim için StartTimeUtc kullanınca, saat şu anki saatten 2 saat öncesini gösterdiği için AddHours(-2) metodunu kullanarak saat farkını düzelttim.
4. Zamanlayıcı işlevine Gorev1 görevinin tanımladığımız tetikleyiciye göre çalıştırılacağı bildiriliyor.
Artık zamanı geldiğinde görevimiz çalışacak.
Not: Çalışması için Quartz kütüphanesini Reference olarak eklemeyi unutmayın. Ayrıca eklemenize rağmen hata verirse projenin .NET versiyonunu örneğin 3.5 yapın. Hata vermesi zannedersem versiyonların Client Profile olanlarında oluyor. Bunu proje özelliklerinden değiştirerek kolayca giderebilirsiniz.
| Quartz.NET C# zamanlanmış görev örneği | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
/* * Created by SharpDevelop. * User: u * Date: 15.12.2010 * Time: 11:07 * * To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using Quartz; using Quartz.Impl; namespace zamanlayici { /// <summary> /// Description of MainForm. /// </summary> public partial class MainForm : Form { public MainForm() { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. // } void MainFormLoad(object sender, EventArgs e) { ISchedulerFactory schedFact = new StdSchedulerFactory(); IScheduler sched = schedFact.GetScheduler(); sched.Start(); JobDetail jobDetail = new JobDetail("myJob", null, typeof(Gorev1)); Trigger trigger = TriggerUtils.MakeMinutelyTrigger(15); DateTime zaman = new DateTime(2010,12,15,23,58,45); trigger.StartTimeUtc = zaman.AddHours(-2); trigger.Name = "myTrigger"; sched.ScheduleJob(jobDetail, trigger); } } public class Gorev1 : IJob { public Gorev1() { } public void Execute(JobExecutionContext context) { MessageBox.Show("Gorev1 Çalıştırıldı."); } } } |
Evet biraz karışık görünüyor değil mi?
Size tavsiyem, yeni bir solution oluşturup formun kaynak koduna yukarıdakileri yapıştırıp çalıştırmanız ve daha sonra deneme yanılma veya Quartz.NET'in yardım belgelerine bakarak ihtiyacınıza uygun olarak değiştirmeniz ve geliştirmeniz.
http://www.ceviz.net/quartznet_a1371.html linkinde benzer bir kaynak daha var, Linux'daki Cron biçiminde zaman tanımlamak isterseniz buraya bakarak yapabilirsiniz.
Ayrıca http://www.softwarediary.net/blog/post/quartz-net-gorevler, http://quartznet.sourceforge.net/ kaynaklarını da belirtelim. Gerçi aradığınızda bunlar çıkıveriyor.
Bilişim Haberleri
Windows Live Hotmail Türkiye Kullanım Sayıları
Internete her gün 32 milyon vatandaşımız erişiyormuş ve de 20 milyon kişi hem Hotmail mail hesabı hem de MSN instant messaging kullanıyormuş.
turkerHR Yayınlandı!
Kodları tamamen bana ait olan turkerHR yazılımımı hemen indirip kurup kullanabilirsiniz. Kaynak kodları herkese açık, şimdilik biraz kötü görünebilir, iyileştireceğim.
Joomla 1.6.1 Güvenlik Sürümü Yayınlandı
Joomla 1.6 kullananların 1.6.1 sürümüne güncelleme yapmaları gerekiyor güvenlik gereği.
PayPal ile Türk Lirası Kullanabiliriz
PayPal’ın ne zaman Türk Lirası ödemelerini kabul edeceğini merak ediyorsanız, artık ediyor.
Dış Linkler

