by Anonymous » 17 Mar 2025, 12:46
Ich habe einen Hintergrundarbeiter, der den Hintergrundservice implementiert (bereitgestellt von MS).
Code: Select all
public class MyService : BackgroundService {
private readonly MyDbContext _context;
public MyService(MyDbContext context) {
//...
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
try {
while (true)
{
stoppingToken.ThrowIfCancellationRequested();
// Do some work
}
} catch(OperationCancelledException) {
_context.Add(new MyLogMessage(){ Error = "MyService cancelled!" });
_context.SaveChanges();
}
// ...
}
}
Wenn der anmutige Heruntergang (in Konsole: Strg+C) angefordert wird, wird der Fangblock ausgelöst, und auch die Savechanges () scheinen ausgeführt zu werden. Aber manchmal wird der Fehler in der Datenbank gespeichert und die Zeit nicht. Auch das EntityFramework druckt eine Einfügungsanweisung in der Konsole, aber das Protokoll befindet sich nicht im dB.>
Ich habe einen Hintergrundarbeiter, der den Hintergrundservice implementiert (bereitgestellt von MS).[code]public class MyService : BackgroundService {
private readonly MyDbContext _context;
public MyService(MyDbContext context) {
//...
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
try {
while (true)
{
stoppingToken.ThrowIfCancellationRequested();
// Do some work
}
} catch(OperationCancelledException) {
_context.Add(new MyLogMessage(){ Error = "MyService cancelled!" });
_context.SaveChanges();
}
// ...
}
}
[/code]
Wenn der anmutige Heruntergang (in Konsole: Strg+C) angefordert wird, wird der Fangblock ausgelöst, und auch die Savechanges () scheinen ausgeführt zu werden. Aber manchmal wird der Fehler in der Datenbank gespeichert und die Zeit nicht. Auch das EntityFramework druckt eine Einfügungsanweisung in der Konsole, aber das Protokoll befindet sich nicht im dB.>