En el sistema asp.net forums2 o cs, se enviará un correo electrónico cada pocos minutos, pero si se ejecuta, el servidor de la base de datos se reiniciará.
Hará que el hilo de Enviar correo electrónico muera.
Código de referencia:
vacío privado ScheduledWorkCallbackEmailInterval (remitente del objeto)
{
intentar {
// suspende el cronómetro mientras procesamos los correos electrónicos
EmailInterval
);
//
Emails.SendQueuedEmails (remitente (HttpContext));
//Actualizar usuarios anónimos
//
Usuarios.UpdateAnonymousUsers (remitente (HttpContext))
;
captura (Excepción e) {
ForumException fe = new ForumException (ForumExceptionType.EmailUnableToSend, "Error en el subproceso de trabajo programado", e);
fe.Log();
}
finalmente {
emailTimer.Change (Correo electrónicoInterval, Correo electrónicoInterval);
}
}
De hecho, el código: emailTimer.Change(System.Threading.Timeout.Infinite, EmailInterval
no es lo suficientemente fuerte. En teoría, si ocurre un error durante la ejecución, se ejecutará:
finalmente {).
emailTimer.Change (Correo electrónicoInterval, Correo electrónicoInterval);
}
Pero, de hecho, si se reinicia el servidor de la base de datos, el hilo del temporizador puede morir para siempre.
Solución manual: reinicie la aplicación web
o vuelva a escribir el código: emailTimer.Change( System.Threading.Timeout.Infinite, EmailInterval
a: emailTimer.Change( EmailInterval * 2, EmailIntervalse puede resolver
);
Otras referencias:
msdn:
System.Theading.Timer.Change API: