ich folgenden Funktionalität mit diesem CodeWie Warten Sie, bis alle Elemente in einer Liste mit Async Await verarbeitet - C#
1. Ich habe Liste der Elemente zu erreichen versuchen, und ich will Prozesselemente parallel Weg zu beschleunige den Prozess.
2. auch ich will warten, bis alle Daten in der Liste verarbeitet erhalten und gleiche Sache muß ich in der Datenbank aktualisieren
private async Task<bool> ProceeData<T>(IList<T> items,int typeId,Func<T, bool> updateRequestCheckPredicate, Func<T, bool> newRequestCheckPredicate)
{
continueFlag = (scripts.Count > =12) ? true : false;
await ProcessItems(items, updateRequestCheckPredicate, newRequestCheckPredicate);
//Wait Until all items get processed and Update Status in database
var updateStatus =UpdateStatus(typeId,DateTime.Now);
return continueFlag;
}
private async Task ProcessItems<T>(IList<T> items,Func<T, bool> updateRequestCheckPredicate, Func<T, bool> newRequestCheckPredicate)
{
var itemsToCreate = items.Where(newRequestCheckPredicate).ToList();
var createTask = scripts
.AsParallel().Select(item => CrateItem(item);
.ToArray();
var createTaskComplete = await Task.WhenAll(createTask);
var itemsToUpdate = items.Where(updateRequestCheckPredicate).ToList();
var updateTask = scripts
.AsParallel().Select(item => UpdateItem(item)
.ToArray();
var updateTaskComplete = await Task.WhenAll(updateTask);
}
private async Task<ResponseResult> CrateItem<T>(T item)
{
var response = new ResponseResult();
Guid requestGuid = Guid.NewGuid();
auditSave = SaveAuditData(requestGuid);
if (auditSaveInfo.IsUpdate)
{
response = await UpdateItem(item);
}
response = await CreateTicket<T>(item);
// Wait response
UpdateAuditData(response)
}
private async Task<ServiceNowResponseResult> CreateTicket<T>(T item)
{
// Rest call and need to wait for result
var response = await CreateNewTicket<T>(scriptObj, serviceRequestInfo);
return response;
}
Ich bin Asynchron-Konzept zu erwarten und so jemand pls Beratung ich, ob ich tue, ist ein richtiger Ansatz oder wenn falsch, bitte helfen Sie mir mit Hilfe eines Beispielcodes
Ich bin etwas verwirrt mit ur Probe code.Which sind diese Methoden CheckItem, ProcessItem. Kann es mit den Funktionen zuordnen, die ich in der ursprünglichen Frage – vmb
verwendet habe Es wird sehr hilfreich sein, wenn Sie den Code mit denselben Methodennamen und Variablennamen schreiben, die ich in der ursprünglichen Frage – vmb
Verarbeitung von ItemsToUpdate Sammlung sollte erst nach Abschluss beginnen Verarbeitung der createTask-Sammlung – vmb