C# 从列表中运行任务

C# 从列表中运行任务,c#,task,C#,Task,当我运行这段代码时,我得到了一个我不理解的异常:“不能对延续任务调用start”。请告诉我我做错了什么 List<Task> TasksList = new List<Task>(); for (int i = 0; i < ThreadsNumber; i++) { int local = i; var task = new Task<List<string>&g

当我运行这段代码时,我得到了一个我不理解的异常:“不能对延续任务调用start”。请告诉我我做错了什么

  List<Task> TasksList = new List<Task>();
        for (int i = 0; i < ThreadsNumber; i++)
        {
            int local = i;
            var task = new Task<List<string>>(() => PrimeTask(Ratio * local, (local + 1) * Ratio))
                .ContinueWith((t) => UpdatePrimesList(t.Result));
            TasksList.Add(task);
            TasksList[i].Start();
        }

        Task.WaitAny(TasksList.ToArray());
List TasksList=new List();
对于(int i=0;iPrimeTask(比率*本地,(本地+1)*比率))
.ContinueWith((t)=>UpdatePrimesList(t.Result));
TasksList.Add(任务);
TasksList[i].Start();
}
Task.WaitAny(TasksList.ToArray());

这里的问题是,
任务
不是指您正在创建的第一个任务,而是指您使用
继续创建的任务

即,这种结构:

var task = new Task<..>(...).ContinueWith(...);
这里不再引用
SomeObject
,只引用
SomeMethodReturningAnotherObject
返回的任何方法

而是这样做:

var task = new Task<..>(...);
task.ContinueWith(...);
TaskList.Add(task);
task.Start();
var task=新任务(…);
任务。继续使用(…);
任务列表。添加(任务);
task.Start();

这将正确启动第一个任务,而不会像异常消息所告诉您的那样尝试启动继续任务。

这里的问题是
任务
不是指您正在创建的第一个任务,而是指您使用
继续创建的任务

即,这种结构:

var task = new Task<..>(...).ContinueWith(...);
这里不再引用
SomeObject
,只引用
SomeMethodReturningAnotherObject
返回的任何方法

而是这样做:

var task = new Task<..>(...);
task.ContinueWith(...);
TaskList.Add(task);
task.Start();
var task=新任务(…);
任务。继续使用(…);
任务列表。添加(任务);
task.Start();

这将正确启动第一个任务,而不会像异常消息所告诉的那样尝试启动继续任务。

这是什么语言?用语言标记问题。你能发布例外情况吗?看看这篇
MSDN帖子
这是什么语言?用语言标记问题。你能发布例外情况吗?看看这篇
MSDN帖子