Ist das folgende ein korrektes Muster, um lange laufende Hintergrundarbeit in Asp.Net Kern zu implementieren? Oder sollte ich eine Form von Task.Run
/ mit TaskCreationOptions.LongRunning
Option verwenden?Asp.Net Kern lange laufende Aufgabe
public void Configure(IApplicationLifetime lifetime)
{
lifetime.ApplicationStarted.Register(() =>
{
// not awaiting the 'promise task' here
var t = DoWorkAsync(lifetime.ApplicationStopping);
lifetime.ApplicationStopped.Register(() =>
{
try
{
// give extra time to complete before shutting down
t.Wait(TimeSpan.FromSeconds(10));
}
catch (Exception)
{
// ignore
}
});
});
}
async Task DoWorkAsync(CancellationToken token)
{
while (!token.IsCancellationRequested)
{
await // async method
}
}
Sie eine Bibliothek wie 'Hangfire' verwenden könnte, dies zu tun. – NtFreX