Ich verwende den einfachen Scheduler der Quartz.net-Bibliothek. Ich habe 7 verschiedene Auslöser. Die Reihenfolge ist so.Quartz.net funktioniert nicht immer
Zuerst: alle 120 Minuten.
Zweitens: alle 12 Stunden.
Drittens: alle 5 Minuten.
Viertens: alle 3 Minuten.
Fünfte: alle 29 Sekunden.
Sechstens: alle 10 Sekunden.
Siebtens: alle 5 Sekunden.
Es ist ein bisschen kompliziert, wie Sie es sehen. Ich habe ein Problem wie dieses. First Trigger muss alle zwei Stunden arbeiten. Aber nach ein paar Läufen stoppt es von selbst. Es funktioniert überhaupt nicht. Die anderen arbeiten und sie sind in Ordnung. Es tut mir leid für mein schlechtes Englisch.
private int bultengetir = 120; // min
private int baslayanmacsil = 29; //sec
private int kuponsonuclandir = 5;//5 min
private int canliorangetir = 10; //sec
private int canlimacgetir = 7; //sec
private int canlimacsil = 12;//hour
private int videoeslestir = 3; //min
private DateTimeOffset g_bultengetir = DateTimeOffset.UtcNow.AddMinutes(0);//10
private DateTimeOffset g_baslayanmacsil = DateTimeOffset.UtcNow.AddMinutes(5);//5
private DateTimeOffset g_canlimacgetir = DateTimeOffset.UtcNow.AddMinutes(10);//10
private DateTimeOffset g_canliorangetir = DateTimeOffset.UtcNow.AddMinutes(11);//55
private DateTimeOffset g_canlimacsil = DateTimeOffset.UtcNow.AddMinutes(12);//5
private DateTimeOffset g_kuponsonuclandir = DateTimeOffset.UtcNow.AddMinutes(15);//15
private DateTimeOffset g_videoeslestir = DateTimeOffset.UtcNow.AddMinutes(15);//7
public void RunJobs()
{
CanliMaclariGetir();
CanliOranlariGetir();
BultenGetir();
BaslayanMaclariSil();
CanliMaclariSil();
KuponlariSonuclandir();
VideoEslestir();
}
private void BultenGetir()
{
try
{
ISchedulerFactory schfack = new StdSchedulerFactory();
IScheduler scheduler = schfack.GetScheduler();
IJobDetail jobdetay = JobBuilder.Create<BultenGetir>()
.WithIdentity("bultengetir")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithSimpleSchedule(s => s.WithIntervalInMinutes(bultengetir).RepeatForever())
.StartAt(g_bultengetir)
.Build();
scheduler.ScheduleJob(jobdetay, trigger);
scheduler.Start();
Log log = new Log()
{
Name = "BultenGetir Görev Emri",
Description = "BultenGetir Görev Emri Verildi.",
Start = DateTime.Now,
Finish = DateTime.Now,
TotalMilliSecond = 0,
Type = 6
};
DbWork db = new DbWork();
db.LogEkle(log);
}
catch (Exception ex)
{
string h_mesaj = ex.Message.ToString();
string icerik = "";
if (ex.InnerException != null) { icerik = ex.InnerException.ToString(); }
string h_yer = ex.StackTrace.ToString();
dal.HataEkle("", "Gorevler Katmanı > Gorev_Zamanlayici.cs", "BultenGetir()", DateTime.Now, h_mesaj, icerik, h_yer);
}
}
private void BaslayanMaclariSil()
{
try
{
ISchedulerFactory schfack = new StdSchedulerFactory();
IScheduler scheduler = schfack.GetScheduler();
IJobDetail jobdetay = JobBuilder.Create<BaslayanMaclariSil>()
.WithIdentity("baslayansil")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithSimpleSchedule(s => s.WithIntervalInSeconds(baslayanmacsil).RepeatForever())
.StartAt(g_baslayanmacsil)
.Build();
scheduler.ScheduleJob(jobdetay, trigger);
scheduler.Start();
Log log = new Log()
{
Name = "BaslayanMaclariSil Görev Emri",
Description = "BaslayanMaclariSil Görev Emri Verildi.",
Start = DateTime.Now,
Finish = DateTime.Now,
TotalMilliSecond = 0,
Type = 6
};
DbWork db = new DbWork();
db.LogEkle(log);
}
catch (Exception ex)
{
string h_mesaj = ex.Message.ToString();
string icerik = "";
if (ex.InnerException != null) { icerik = ex.InnerException.ToString(); }
string h_yer = ex.StackTrace.ToString();
dal.HataEkle("", "Gorevler Katmanı > Gorev_Zamanlayici.cs", "BaslayanMaclariSil()", DateTime.Now, h_mesaj, icerik, h_yer);
}
}
private void KuponlariSonuclandir()
{
try
{
ISchedulerFactory schfack = new StdSchedulerFactory();
IScheduler scheduler = schfack.GetScheduler();
IJobDetail jobdetay = JobBuilder.Create<KuponlariSonuclandir>()
.WithIdentity("kuponsonuclandir")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithSimpleSchedule(s => s.WithIntervalInMinutes(kuponsonuclandir).RepeatForever())
.StartAt(g_kuponsonuclandir)
.Build();
scheduler.ScheduleJob(jobdetay, trigger);
scheduler.Start();
Log log = new Log()
{
Name = "KuponlariSonuclandir Görev Emri",
Description = "KuponlariSonuclandir Görev Emri Verildi.",
Start = DateTime.Now,
Finish = DateTime.Now,
TotalMilliSecond = 0,
Type = 6
};
DbWork db = new DbWork();
db.LogEkle(log);
}
catch (Exception ex)
{
string h_mesaj = ex.Message.ToString();
string icerik = "";
if (ex.InnerException != null) { icerik = ex.InnerException.ToString(); }
string h_yer = ex.StackTrace.ToString();
dal.HataEkle("", "Gorevler Katmanı > Gorev_Zamanlayici.cs", "KuponlariSonuclandir()", DateTime.Now, h_mesaj, icerik, h_yer);
}
}
private void CanliOranlariGetir()
{
try
{
ISchedulerFactory schfack = new StdSchedulerFactory();
IScheduler scheduler = schfack.GetScheduler();
IJobDetail jobdetay = JobBuilder.Create<CanliOranlar>()
.WithIdentity("canliorangetir")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithSimpleSchedule(s => s.WithIntervalInSeconds(canliorangetir).RepeatForever()).StartAt(g_canliorangetir).Build();
scheduler.ScheduleJob(jobdetay, trigger);
scheduler.Start();
Log log = new Log()
{
Name = "CanliOranlariGetir Görev Emri",
Description = "CanliOranlariGetir Görev Emri Verildi.",
Start = DateTime.Now,
Finish = DateTime.Now,
TotalMilliSecond = 0,
Type = 6
};
DbWork db = new DbWork();
db.LogEkle(log);
}
catch (Exception ex)
{
string h_mesaj = ex.Message.ToString();
string icerik = "";
if (ex.InnerException != null) { icerik = ex.InnerException.ToString(); }
string h_yer = ex.StackTrace.ToString();
dal.HataEkle("", "Gorevler Katmanı > Gorev_Zamanlayici.cs", "CanliOranlariGetir()", DateTime.Now, h_mesaj, icerik, h_yer);
}
}
private void CanliMaclariGetir()
{
try
{
ISchedulerFactory schfack = new StdSchedulerFactory();
IScheduler scheduler = schfack.GetScheduler();
IJobDetail jobdetay = JobBuilder.Create<CanliMaclar>()
.WithIdentity("canlimacgetir")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithSimpleSchedule(s => s.WithIntervalInSeconds(canlimacgetir).RepeatForever()).StartAt(g_canlimacgetir).Build();
scheduler.ScheduleJob(jobdetay, trigger);
scheduler.Start();
Log log = new Log()
{
Name = "CanliMaclariGetir Görev Emri",
Description = "CanliMaclariGetir Görev Emri Verildi.",
Start = DateTime.Now,
Finish = DateTime.Now,
TotalMilliSecond = 0,
Type = 6
};
DbWork db = new DbWork();
db.LogEkle(log);
}
catch (Exception ex)
{
string h_mesaj = ex.Message.ToString();
string icerik = "";
if (ex.InnerException != null) { icerik = ex.InnerException.ToString(); }
string h_yer = ex.StackTrace.ToString();
dal.HataEkle("", "Gorevler Katmanı > Gorev_Zamanlayici.cs", "CanliMaclariGetir()", DateTime.Now, h_mesaj, icerik, h_yer);
}
}
private void CanliMaclariSil()
{
try
{
ISchedulerFactory schfack = new StdSchedulerFactory();
IScheduler scheduler = schfack.GetScheduler();
IJobDetail jobdetay = JobBuilder.Create<CanliSil>()
.WithIdentity("canlimacsil")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithSimpleSchedule(s => s.WithIntervalInHours(canlimacsil).RepeatForever())
.StartAt(g_canlimacsil)
.Build();
scheduler.ScheduleJob(jobdetay, trigger);
scheduler.Start();
Log log = new Log()
{
Name = "CanliMaclariSil Görev Emri",
Description = "CanliMaclariSil Görev Emri Verildi.",
Start = DateTime.Now,
Finish = DateTime.Now,
TotalMilliSecond = 0,
Type = 6
};
DbWork db = new DbWork();
db.LogEkle(log);
}
catch (Exception ex)
{
string h_mesaj = ex.Message.ToString();
string icerik = "";
if (ex.InnerException != null) { icerik = ex.InnerException.ToString(); }
string h_yer = ex.StackTrace.ToString();
dal.HataEkle("", "Gorevler Katmanı > Gorev_Zamanlayici.cs", "CanliMaclariSil()", DateTime.Now, h_mesaj, icerik, h_yer);
}
}
private void VideoEslestir()
{
try
{
ISchedulerFactory schfack = new StdSchedulerFactory();
IScheduler scheduler = schfack.GetScheduler();
IJobDetail jobdetay = JobBuilder.Create<VideoEslestir>()
.WithIdentity("videoeslestir")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithSimpleSchedule(s => s.WithIntervalInMinutes(videoeslestir).RepeatForever())
.StartAt(g_videoeslestir)
.Build();
scheduler.ScheduleJob(jobdetay, trigger);
scheduler.Start();
Log log = new Log()
{
Name = "VideoEslestir Görev Emri",
Description = "VideoEslestir Görev Emri Verildi.",
Start = DateTime.Now,
Finish = DateTime.Now,
TotalMilliSecond = 0,
Type = 6
};
DbWork db = new DbWork();
db.LogEkle(log);
}
catch (Exception ex)
{
string h_mesaj = ex.Message.ToString();
string icerik = "";
if (ex.InnerException != null) { icerik = ex.InnerException.ToString(); }
string h_yer = ex.StackTrace.ToString();
dal.HataEkle("", "Gorevler Katmanı > Gorev_Zamanlayici.cs", "videoeslestir()", DateTime.Now, h_mesaj, icerik, h_yer);
}
}
Beitrag der Cron-Ausdrücke, die Sie verwenden – Jinish
Quartz.net läuft im AppPool der Website. Wenn kein Datenverkehr vorhanden ist, wird der AppPool in den Ruhezustand versetzt und die Trigger werden nicht ausgelöst. Wenn der Pool wieder gestartet wird, wird der Timer zurückgesetzt. Oder etwas anderes verursacht eine Wiederverwendung des AppPools, wie Änderungen am Ordner "bin" – VDWWD
Ok, ich füge Quellcode hinzu. –