Di sistem asp.net forums2 atau cs, email akan dikirim setiap beberapa menit, tetapi jika dijalankan, server database akan restart.
Akan menyebabkan thread Kirim Email mati.
Kode referensi:
private void ScheduledWorkCallbackEmailInterval (pengirim objek)
{
mencoba {
// menangguhkan pengatur waktu saat kami memproses email
emailTimer.Change( System.Threading.Timeout.Infinite, EmailInterval );
// Kirim email
//
Emails.SendQueuedEmails( (HttpContext) pengirim);
//Perbarui pengguna anonim
//
Users.UpdateAnonymousUsers( (HttpContext) pengirim
}
tangkapan(Pengecualian e) {
ForumException fe = new ForumException( ForumExceptionType.EmailUnableToSend, "Thread Pekerja Terjadwal gagal.", e );
fe.Log();
}
Akhirnya {
emailTimer.Change( EmailInterval, EmailInterval );
}
}
Faktanya, kode: emailTimer.Change(System.Threading.Timeout.Infinite, EmailInterval);
Secara teori, jika terjadi kesalahan selama eksekusi, maka akan dieksekusi:
akhirnya {.
emailTimer.Change( EmailInterval, EmailInterval );
}
Namun nyatanya, jika server database di-restart, thread pengatur waktu bisa mati selamanya.
Solusi manual: Mulai ulang aplikasi web
atau tulis ulang kode: emailTimer.Change( System.Threading.Timeout.Infinite, EmailInterval
)
;
Referensi lain:
msdn:
System.Theading.Timer.Change API: