Die asynchrone Methode in foreach gibt keine JSON-Ergebnisdaten zurück, wenn „await Task.WhenAll(listOfTasks)“ verwendet

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Die asynchrone Methode in foreach gibt keine JSON-Ergebnisdaten zurück, wenn „await Task.WhenAll(listOfTasks)“ verwendet

by Guest » 27 Dec 2024, 10:42

Code: Select all

var reqs = History.OrderByDescending(m => m.DateFiled).Skip(pageIndex * pageSize).Take(pageSize);

var rowsObj = new List(); // Use a List instead of an array

List listOfTasks = new List();

// Start all async tasks
foreach (var req in reqs)
{
listOfTasks.Add(rr.ObjectRowsAsync(req, rowsObj));
}
try
{
await Task.WhenAll(listOfTasks);
}
catch (Exception ex)
{
// Handle error (log it or return a meaningful error message)
return Json(new { error = ex.Message }, JsonRequestBehavior.AllowGet);
}

var result = new JsonResult
{
Data = new
{
total = totalPages,
page = page,
records = totalRecords,
rows = rowsObj
},
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};

return result;
Die Idee bestand darin, Async für eine Methode zu verwenden, die über eine foreach-Schleife verfügt und ein Array von Objekten zurückgibt.
Wenn „await Task.WhenAll(listOfTasks)“ lautet Wenn die Aktion verwendet wird, gibt sie keine JSON-Ergebnisdaten zurück, aber als ich sie auskommentiert habe, übergibt die Aktion die Daten ordnungsgemäß. Was ist hier die beste Vorgehensweise?
Und wie kann ich einen Haltepunkt für asynchrone Methoden verwenden? löst nicht aus. Oder gibt es überhaupt eine Möglichkeit zu sehen, was hier passiert?
Ich habe viele Stack-Threads über asynchrone Verwendungen gelesen, sogar das interessante ForEachAsync und Wait foreach in höheren Versionen.

Top