タスクを作成するときに、タスクの開始に使用されたパラメータを記録することができます。タスク<T>開始パラメータを保持
次の例を参考にしてください(実際のプロトタイプではありません)。
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);
}
結果が出力されると、私は入力変数は、それが入力して結果を返しますので、あなたは、戻り値の型myFunc
変更を変更することができれば、結果
:それは簡単にするために、あなたはそのための独自のクラスを作成していないかもしれません。しかし、それらを含むオブジェクトを返すことができます。あなたの例では、KeyValuePairまたはカスタムオブジェクトです。 –
あなたの質問には関係ありませんが、ホットなものではなくコールドタスクを作成する理由は何ですか? – stt106