Ich habe eine asp.net mvc-Anwendung erstellt, die alle 10 Minuten die von bestimmten Benutzern generierten Tweets liest. Ich mache diese Aufgabe durch einen Timer. Der Timer läuft perfekt zwischen 2 und 5 mal und dann stoppt der Timer ohne eine Ausnahme oder einen Fehler.Warum stoppt mein asp.net mvc timer?
Weiß jemand, warum das passiert und wie kann ich einstellen, dass es immer läuft bis ich den Timer stoppe ???
Hier wird der Timer-Konfiguration und der Timer Handler:
Public Shared Function Start()
Dim db As New EnubexDbContext
Dim provider As CultureInfo = CultureInfo.InvariantCulture
Dim tiempo As Double = Convert.ToDouble(db.ParametrosGenerales.Where(Function(pg) pg.sDescripcionParametroGeneral = "frecuenciaSeekerTwitterTimer").Select(Function(pg) pg.sValorParametroGeneral).FirstOrDefault())
If Not IsNothing(tiempo) Then
timer = New Timer(tiempo)
If Not IsNothing(timer) Then
ApplicationLog.EscribirActividad("Se creo el objeto timer")
End If
Try
AddHandler timer.Elapsed, New ElapsedEventHandler(AddressOf Handler)
ApplicationLog.EscribirActividad("Se agregó el handler")
timer.Enabled = True
If Not IsNothing(timer) Then
ApplicationLog.EscribirActividad("Se activó el timer")
End If
Return (0)
Catch ex As Exception
ApplicationLog.EscribirExcepctionLog(ex)
Return (1)
End Try
Else
Return (1)
End If
End Function
Shared Async Sub Handler(ByVal sender As Object, ByVal e As ElapsedEventArgs)
ApplicationLog.EscribirActividad("Empezando búsqueda")
Try
Await SeekTwitter()
ApplicationLog.EscribirActividad("Terminando búsqueda")
Catch ex As Exception
ApplicationLog.EscribirExcepctionLog(ex)
End Try
End Sub
Dies ist wahrscheinlich, weil der AppPool recycling ist, den Timer zu zerstören. Wo wird 'Start()' aufgerufen? –
Führen Sie in ASP.NET keinen Hintergrundprozess selbst aus. Du wirst vermasseln. Scott Hanselman diskutiert das auf seinem Blog [hier] (http://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx). – mason