C# Quartz.NET kullanarak Zamanlanmış Görevler Oluşturmak

Kullanıcı Oyu:  / 0
En KötüEn İyi 

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.


Social Widget