Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 任务<;T>;保持起动参数_C#_Multithreading - Fatal编程技术网

C# 任务<;T>;保持起动参数

C# 任务<;T>;保持起动参数,c#,multithreading,C#,Multithreading,创建任务时,是否可以记录用于启动任务的参数 以以下为例(只是一个原型,它不是真实的!) static void Main(字符串[]args) { ICollection taskList=新列表(); //创建一组任务 对于(int i=1;i { 返回myFunc(本地_i); }); t、 Start(); 任务列表。添加(t); } //等待所有任务完成。 Task.WaitAll(taskList.ToArray()); //输出结果 foreach(任务列表中的var tsk) {

创建任务时,是否可以记录用于启动任务的参数

以以下为例(只是一个原型,它不是真实的!)

static void Main(字符串[]args)
{
ICollection taskList=新列表();
//创建一组任务
对于(int i=1;i
{
返回myFunc(本地_i);
});
t、 Start();
任务列表。添加(t);
}
//等待所有任务完成。
Task.WaitAll(taskList.ToArray());
//输出结果
foreach(任务列表中的var tsk)
{
//“?”应该是任务的输入值
系统诊断调试写线(“输入:??-结果:+tsk.Result”);
}
}
静态int myFunc(int i)
{
报税表(i*i);
}

当结果输出时,我想知道为产生结果的
myFunc()
提供了什么输入变量,如果您可以更改
myFunc
的返回类型,那么它将以
元组的形式返回输入和结果


如果不能,可以使用
字典
列表
将输入与任务一起存储(而不是
ICollection

除了返回包含两个值的
元组
,还可以将
任务列表
设置为
ICollection
,并将参数存储在那里。为了简化,您可以为此创建自己的类:

class TaskInfo<T>
{
     public Task<T> Task { get; set; }
     public T Parameter { get; set; }
}
类任务信息
{
公共任务任务{get;set;}
公共T参数{get;set;}
}
然后

var taskList = new List<TaskInfo<int>>();
...
taskList.Add(new TaskInfo { Task = t, Parameter = local_i });
var taskList=新列表();
...
添加(新任务信息{Task=t,参数=local_i});

不,这是不可能的。但您可以返回包含它们的对象。在您的示例中,是一个KeyValuePair或一个自定义对象。与您的问题无关,但您希望创建冷任务而不是热任务的原因是什么?我会使用这种方法,因为它不涉及更改任务调用的方法,并且它将额外数据保留在它所属的逻辑级别。
var taskList = new List<TaskInfo<int>>();
...
taskList.Add(new TaskInfo { Task = t, Parameter = local_i });