Her Pazar gecesi başlayacak ve bir şey gerçekleştirecek bir ASP.net uygulaması için bir zamanlayıcıya sahip olmak istiyorum (veritabanında bir tabloyu güncelleyin). Ancak, web uygulamasına ek olarak sunucuda dağıtılması gereken bir hizmeti gerçekten yazmak istemiyorum. Bunu kolayca gerçekleştirmenin bir yolu var mı? Belki bir Global.asax dosyası kullanıyor musunuz?Asp.net'de Küresel Zamanlayıcı
cevap
En iyi çözüm, this technique kullanmaktı. Sunucu üzerinde daha fazla kontrol sahibi olsaydım, muhtemelen zamanlanmış görevlerden yararlanmak için bir konsol uygulaması yazardım.
Bu, en iyi örnek. Diğer her yorum sayfa ziyaretlerine dayanır. –
Bu güzel – Zeus
Bir konsol uygulaması yazar ve zamanlamak için Zamanlanmış Görevler'u kullanırdım.
Zamanlanmış Görevler sunucu üzerinde tam kontrole sahip olsaydım ideal olurdu ... Ne yazık ki yapmam. Bu seçeneğin farkındalığını artırmak için cevabınızı oylayacağım. – Darwyn
Aslında, o bir kesmek, kesmek hoşuma gidiyor, ama bir kesmek. Denediğiniz başka bir hack ile anter cevabı ekledim. Ne yazık ki, ASP.NET'in yapmak istediğiniz şeyi doğrudan desteklediğini düşünmüyorum. – jrcs3
% 100 emin değilim bunu koyar, ancak bir System.Threading.Timer kullanarak bunu sallardı.
// In some constructor or method that runs when the app starts.
// 1st parameter is the callback to be run every iteration.
// 2nd parameter is optional parameters for the callback.
// 3rd parameter is telling the timer when to start.
// 4th parameter is telling the timer how often to run.
System.Threading.Timer timer = new System.Threading.Timer(new TimerCallback(TimerElapsed), null, new Timespan(0), new Timespan(24, 0, 0));
// The callback, no inside the method used above.
// This will run every 24 hours.
private void TimerElapsed(object o)
{
// Do stuff.
}
Başlangıçta,, saat ve alarm ilk kez ne zaman başlatılacağını belirlemek gerekecek, yoksa zaman Pazar gecesi bu zamanlayıcı çalışmasını istiyorum siteyi açabilirsiniz.
Diğerlerinin dediği gibi, bunu yapmak için siteden başka bir şey kullanın. Bununla başa çıkmak için bir Windows servisi yapmak çok kolay.
Örneğinizdeki gibi bir zamanlayıcı koymak için en iyi yer Global.asax dosyasının Application_Start işleyicisinde olurdu. – Darwyn
Bu zamanlayıcının çalışmadığından emin olmak için kesinlikle bir kontrol yapmanız gerekir. Bu örneği kullanan ve binlerce iş parçacığı üretme olanağını zaten görebiliyorum çünkü bunlar Application_Start olay işleyicisine bağlandı. –
Bir .NET uygulamasının sorununuz için iyi bir çözüm olduğunu sanmıyorum.
IIS Geri Dönüşüm işlemi, işlemi birkaç saatte bir (her seferinde yapılana bağlı olarak) geri dönüştürecek ve bu aralığı yedi güne ayarlasanız bile, uygulama havuzu hala denetiminizin dışındaki başka nedenlerle geri dönüştürülebilir.
jcrs3 ile katılıyorum: Sadece küçük bir konsol uygulaması yazmak ve zamanlayıcıyı kullanmak. Bir hizmet de yazabilirsiniz, ancak hızlı ve kolay bir şeye ihtiyacınız varsa, konsol uygulaması ile gidin. Planlanmış Görevler hakkında yorumunuza yanıt olarak
:
Başka kesmek yılında Global.asax, daha da sık sık Application_EndRequest (ister denir) bir olay geçersiz kılmak ve benzer bir şey yapmak olacaktır:
protected void Application_EndRequest()
{
if (((DateTime)Application["lastTimeRun"]) < DateTime.Today)
{
Application["lastTimeRun"] = DateTime.Today;
doSomething();
}
}
tarihi değişti sonra bu ilk istek sonrasında aday olacağını, dolayısıyla bu her sabah 3:00 AM kesin çalıştırmak olacağını garanti olmaz.
Başka bir bilgisayarda Zamanlanmış Görev kullanarak siteye çarptığınız durumları bile ekledim.
ASP .NET gibi .NET kurumsal uygulaması için bir iş zamanlayıcısı olan Quartz .NET'u deneyin ve bu amaca hizmet etmelidir.
- 1. zamanlayıcı
- 2. Sütun filtreleri olmadan küresel filtreli küresel filtreler
- 3. Küresel 301
- 4. Küresel Rotasyon
- 5. JavaScript küresel
- 6. Silverlight'ta Zamanlayıcı
- 7. benim Build.xml karınca komut küresel svnSetting tanımlamak istiyorum küresel
- 8. Çoklu küresel komutlar hata veriyor: yapamaz: Küresel özyinelemeli
- 9. I laravel aynı küresel yerel ayarlamak çalışıyorum küresel Yerel
- 10. Küresel değişkenleri Jersey/Glassfish
- 11. Küresel hgignore kullanımı
- 12. Monotouch Küresel İstisna yönetimi
- 13. Uyarlama - Intercept yanıtları küresel
- 14. Yayan olaylar küresel
- 15. Küresel istisnaları VB'ye taşıyın
- 16. Düğüm uygulaması davranır küresel
- 17. Küresel yapılandırma in.cd
- 18. Küresel olarak, vim
- 19. Küresel işleçler ve polimorfizm
- 20. Jersey'de Küresel İstisna Yönetimi
- 21. Küresel değişken Tuhaflıklar
- 22. Küresel Paralaks - Saf CSS
- 23. Küresel enum nasıl oluşturulur
- 24. Küresel harita değişikleri oluşturun
- 25. 'd3 ve 'küresel kütüphaneler
- 26. Java'da küresel kısayol tuşları
- 27. gcov ve küresel yıkıcılar
- 28. Küresel kapsam belirleme F #
- 29. Maven3 küresel bağımlılık dışlama
- 30. Eclipse küresel tercihleri
Bir web uygulamasının bunun için doğru bir araç olduğuna inanmıyorum, ancak önemli bir düşünceye devam ederseniz: uygulamanızı bu kadar uzun zaman planında yapmayı planlıyorsanız IIS'yi geri dönüştürmeyi devre dışı bırakın! – annakata
yinelenen: http://stackoverflow.com/questions/542804/asp-netbest-way-to-run-scheduled-tasks –
@mausch iyi bul ... Bu soruyu araştırmayı bitirdim ve http: // blog'u buldum .stackoverflow.com/2008/07/kolay-arka plan-görevleri-in-aspnet/benim için en iyi çözüm gibi görünüyor. – Darwyn