Beim Erstellen einer Aufgabe können die Parameter aufgezeichnet werden, die zum Starten der Aufgabe verwendet wurden.Aufgabe <T> Beibehalten der Startparameter
Betrachten Sie als Beispiel (nur ein Prototyp, es ist nicht real!).
static void Main(string[] args)
{
ICollection<Task<int>> taskList = new List<Task<int>>();
// Create a set of tasks
for (int i = 1; i <= 10; i++)
{
var local_i = i; // Local scoped variable
Task<int> t = new Task<int>(() =>
{
return myFunc(local_i);
});
t.Start();
taskList.Add(t);
}
// Wait for all the tasks to complete.
Task.WaitAll(taskList.ToArray());
// Output the results
foreach (var tsk in taskList)
{
// the "???" should be the input value to the task
System.Diagnostics.Debug.WriteLine("Input: ??? - Result: "+tsk.Result);
}
}
static int myFunc(int i)
{
return (i * i);
}
Wenn die Ergebnisse ausgegeben werden, möchte ich wissen, was Eingangsgröße myFunc()
zur Verfügung gestellt wurde, die das Ergebnis erzeugte
Nein es ist nicht möglich. Sie können jedoch ein Objekt zurückgeben, das sie enthält. In Ihrem Beispiel ein KeyValuePair oder ein benutzerdefiniertes Objekt. –
Nicht auf Ihre Fragen bezogen, aber aus irgendeinem Grund, warum Sie eher kalte als heiße Aufgaben erstellen möchten? – stt106