.net Task.start新的初学者问题

.net Task.start新的初学者问题,.net,c#-4.0,task-parallel-library,.net,C# 4.0,Task Parallel Library,错误1委托“System.Action”不接受2个参数 我得到了上面的错误。我不明白出了什么问题 编辑:为什么它接受单个参数 Task.Factory.StartNew((param,param2) => { Console.WriteLine("Test"); }, TaskCreationOptions.None); Task.Factory.StartNew((参数1)=> { 对于(int j=0;j

错误1委托“System.Action”不接受2个参数

我得到了上面的错误。我不明白出了什么问题

编辑:为什么它接受单个参数

Task.Factory.StartNew((param,param2) => { Console.WriteLine("Test"); },
                                        TaskCreationOptions.None);
Task.Factory.StartNew((参数1)=>
{
对于(int j=0;j<10;j++)
{
WriteLine(string.Format(“任务:{0},输出{1}-{2}”),
param1,j.ToString(),param1));
}
},string.Format(“Tast Count”+ic++.ToString());

StartNew
接受一个
操作
委托,该委托被定义为:

  Task.Factory.StartNew((param1) =>
            {
                for (int j = 0; j < 10; j++)
                {
                    Console.WriteLine(string.Format("Task : {0}, outputing {1}- {2}",
                       param1, j.ToString(), param1));
                }
            }, string.Format("Tast Count " + ic++.ToString()));
也就是说,一个没有返回值和参数的方法。您正试图将两个参数传递到操作中:
param
param2

您的代码应该如下所示:

public delegate void Action()

另外,
TaskCreationOptions
附加到自定义任务工厂,而不是默认任务工厂。

StartNew
接受一个
操作
委托,该委托定义为:

  Task.Factory.StartNew((param1) =>
            {
                for (int j = 0; j < 10; j++)
                {
                    Console.WriteLine(string.Format("Task : {0}, outputing {1}- {2}",
                       param1, j.ToString(), param1));
                }
            }, string.Format("Tast Count " + ic++.ToString()));
也就是说,一个没有返回值和参数的方法。您正试图将两个参数传递到操作中:
param
param2

您的代码应该如下所示:

public delegate void Action()

另外,
TaskCreationOptions
附加到自定义任务工厂,而不是默认的任务工厂。

task.factory.StartNew
采用1个参数,即
系统。操作

和一个
系统。根据

封装一个没有参数且不返回 价值观


看样子,你想传递两个参数?您没有将TaskCreationOptions.None传递给StartNew()。如果您确实想传递选项(您不想传递选项,因为您使用的是“无”),那么您可以创建一个自定义任务工厂(将选项传递给其构造函数)。

task.factory.StartNew
接受一个参数,即
系统.Action

和一个
系统。根据

封装一个没有参数且不返回 价值观

看样子,你想传递两个参数?您没有将TaskCreationOptions.None传递给StartNew()。如果您确实想传递选项(您不想传递选项,因为您使用的是“无”),那么您可以创建一个自定义任务工厂(将选项传递给它的构造函数)。

对于
task.factory.StartNew
方法,有以下步骤。你在问题中提到的两个方面是:

Task.Factory.StartNew(() => { Console.WriteLine("Test"); });
                    // ^^ Note: no "param" or "param2".
在没有编译的第一个示例中,它与上一个示例等效。采用多个参数的
Task.Factory.StartNew
没有重载。
Task.Factory.StartNew
方法没有重载。你在问题中提到的两个方面是:

Task.Factory.StartNew(() => { Console.WriteLine("Test"); });
                    // ^^ Note: no "param" or "param2".

在没有编译的第一个示例中,它与上一个示例等效。
Task.Factory.StartNew
没有重载,它接受多个参数。

我认为TaskCreationOptions也不会传递给StartNew()。@Sepster确实-它们是用于自定义TaskFactory的。我已经编辑了我的答案。谢谢!:)但这并不能解释为什么它只使用一个参数。我认为TaskCreationOptions也不会传递给StartNew()。@Sepster确实如此-它们是用于自定义TaskFactory的。我已经编辑了我的答案。谢谢!:)但这并不能解释为什么它只使用一个参数。