Ich entwickle ASP.NET5 Application und ich möchte ein Ereignis auf dem Server nach einer bestimmten Verzögerung auslösen. Ich möchte auch, dass der Client eine Anfrage an den Server senden kann, um die Ausführung des Ereignisses abzubrechen. Wie kann ich eine Timer
beibehalten, damit ich sie in einer anderen Anfrage durch den Aufruf Change(Timeout.Infinite, Timeout.Infinite)
abbrechen kann?ein Ereignis auf dem Server nach bestimmter Verzögerung auslösen
public class ApiController : Controller
{
public IActionResult SetTimer()
{
TimerCallback callback = new TimerCallback(EventToRaise);
Timer t = new Timer(callback, null, 10000, Timeout.Infinite);
//I need to persist Timer instance somehow in order to cancel the event later
return HttpOkObjectResult(timerId);
}
public IActionResult CancelTimer(int timerId)
{
/*
here I want to get the timer instance
and call Change(Timeout.Infinite, Timeout.Infinite)
in order to cancel the event
*/
return HttpOkResult();
}
private void EventToRaise(object obj)
{
///..
}
}
ich System.Threading.Timer bin mit der Ausführung des EventToRaise
zu verzögern, mein Ansatz richtig ist oder sollte ich es auf eine andere Weise zu tun? Was ist der beste Weg, um es zu erreichen?
Read this => http://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx – CodeNotFound
hilft @CodeNotFound Danke, Sir, ich denke, ich werde Hangfire verwenden, wie in dem Artikel empfohlen. – koryakinp