Ich habe eine List<Task<searchDataResponse>>
, die etwa 30 Einträge enthält. Beim Debuggen dieser Liste kann ich nicht bestimmen, welcher der 30 Einträge ein bestimmter Eintrag ist.Wie teilt man Parameterwerte für fehlgeschlagene Methodenaufrufe mit?
Wie kann ich den Methodenaufruf (einschließlich des Eingabeparameterwerts) einer bestimmten Aufgabe in einer Sammlung von Aufgaben ermitteln?
Beispielcode:
var tasks = new List<Task<searchDataResponse>>();
for (var i = 0; i < 30; i++)
{
// GET DATE OF N DAYS PAST (UP TO 30)
var searchDate = DateTime.Now.AddDays(i * -1);
// CALL WEB SERVICE WITH A SPECIFIC DATE
var dateSpecificTask = wsClient.searchDataAsync(searchDate);
// ADD TASK TO LIST OF TASKS
tasks.Add(dateSpecificTask);
}
try
{
Task.WaitAll(tasks.ToArray());
}
catch (AggregateException ae)
{
// SET ALL EXCEPTIONS AS HANDLED
ae.Handle(x => { return true; });
}
// GET LIST OF FAILED TASKS
var failedTasks = tasks.Where(x => x.Status == TaskStatus.Faulted).ToList();
// IDENTIFY FAILED TASKS - TRY TO IDENTIFY WHICH DATE SUPPLIED TO WEB SERVICE FAILED.
foreach (var failedTask in failedTasks)
{
var failedMethod = failedTask.MethodSignature; //<---- here is what i want to do. Property 'MethodSignature' does not exist - this is merely an example of what I am attempting to do.
}
UPDATE - Einige der Kommentare deuten darauf hin, Menschen Sodbrennen über die Verwendung des Ausdrucks Methode Unterschrift hat. Was ich mit der Methodensignatur meine, ist die Methodensignatur einschließlich der Eingabeparameterwerte. Als solche habe ich den Fragetitel geändert, um genauer zu reflektieren, wonach ich suche. Mein Beispiel hat es erfunden und einfach. Es spiegelt nicht mein wirkliches Problem wider. Aber meine Frage bleibt - beim Betrachten der Liste der fehlgeschlagenen Aufgaben, wie ich die tatsächliche Methode ermitteln, die als Teil der Aufgabe aufgerufen wird. Ich kann anscheinend keine Eigenschaften der Aufgabe finden, die beschreiben, welche Methode den Fehler verursacht hat.
Ich verstehe Ihre Frage nicht. Der Ausdruck "Methodensignatur" hat im Kontext von C# eine sehr spezifische Bedeutung und in Ihrem Codebeispiel haben Sie nur eine "Methodensignatur", d. H. Ihren Aufruf an "wsClient.searchDataAsync()", den alle Ihre Aufgaben verwenden. Wenn Sie nur wissen möchten, welche Aufgaben fehlgeschlagen sind, können Sie die Liste einfach mit einem Index wiederholen und diesen Index verwenden, um die an die Aufgabe übergebenen Daten neu zu berechnen. oder noch besser, speichern Sie diese Daten in einer anderen Liste, damit Sie sie korrelieren können. Worum geht es _speziell_ mit denen du Schwierigkeiten hast? Was meinst du wirklich mit "Methodensignatur"? –
@PeterDuniho - im Beispiel-Code rufe ich die Web-Methode 30 Mal, jeweils mit einem etwas anderen Datum. Einige dieser Anrufe schlagen fehl.Ich suche Hilfe bei der Bestimmung der Daten, die beim Aufruf der Web-Service-Methode problematisch waren. Wenn ich die Sammlung von Aufgaben sehe, kann ich sehen, welche Aufgaben fehlgeschlagen sind, aber ich kann nicht mit den Daten korrelieren. Sie schlagen vor, eine andere zu korrelierende Liste zu haben. Würde dies auf der Position in der Liste basieren? Wenn Aufgabe 3 fehlgeschlagen ist, ist das Datum in Punkt 3 in der Korrelationsliste das fehlgeschlagene Datum? – barrypicker
_ "Würde dies auf der Position innerhalb der Liste basieren?" _ - ja, natürlich. Deshalb würden Sie die Liste mit einem Index wiederholen (wie ich oben erwähnte). Zu Ihrer Information: Sie tun sich selbst keinen Gefallen, indem Sie den beleidigenden und entzündlichen Ausdruck "mit Sodbrennen" verwenden, um eine berechtigte Sorge über Ihren Missbrauch der technischen Terminologie zu beschreiben. –