So vermeiden Sie die Entsorgung des Dienstes nach Abschluss der Methode oder die manuelle AusführungC#

Ein Treffpunkt für C#-Programmierer
Guest
 So vermeiden Sie die Entsorgung des Dienstes nach Abschluss der Methode oder die manuelle Ausführung

Post by Guest »

Ich habe eine Webanwendung mit Aspnet Core und abp-framework
abp => 7.2.1< entwickelt /p>
dotnet => net7.0
Das Problem ist, dass ich eine Methode habe, die für zwei Jobs verantwortlich ist
  • Führen Sie einen Prozess aus
  • Protokollieren Sie das Ergebnis von Dieser Vorgang
Die Dauer dieser Arbeiten könnte sehr lang sein, daher habe ich beschlossen, sie gleichzeitig auszuführen
Hier ist eine kurze Beschreibung, wie der Dienst aussieht:< /p>
public class SomeAppService : ISomeAppService, ApplicationService
{
private readonly IRepository _logTableRepository;
public SomeAppService(IRepository logTableRepository)
{
_logTableRepository = logTableRepository;
}
public async Task CommitBulkOperation(int typeOfOperation)
{
List d = FetchSomeData();
List aggregatedTasks = Enumerable.Range(0,11).Order().Select(x =>{
List pagedData = PageData(x);
return new Task(async () => await PerformOperationAndLogResult(pagedData));
}).ToList();
aggregatedTasks.ForEach(x => x.Start());
await Task.WhenAll(aggregatedTasks);
return true;
}
public async Task PerformOperationAndLogResult(List data)
{
foreach(var currentData in data)
{
var response = currentData.Type switch
{
1 => await Handler1(currentData);
2 => await Handler2(currentData);
_ => Throw new Exception();
};
await AddHistory(response);
}
}
internal async AddHistory(LogTable logTable)
{
await _logTableRepository.InsertAsync(logTable);
}
}

nachdem Task.WhenAll Aufgaben ausführt, die ihre Aufgaben im Hintergrund erledigen, aber nachdem die erste ausgelöste Aufgabe beendet ist und das Protokoll übermittelt werden soll, erscheint dieser Fehler

Instanzen können nicht aufgelöst werden und verschachtelte Lebensdauern können nicht aus diesem LifetimeScope erstellt werden, da es (oder einer seiner übergeordneten Bereiche) bereits verworfen wurde.

Gibt es eine Lösung, mit der ich diesen Fehler beheben kann?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post