创建没有lambda的任务

时间:2017-09-25 12:06:32

标签: c# lambda async-await

尝试传递函数而不是lambda表达式,最后混淆了为什么行:

    button(ng-click="changeMessage();")

不会引发错误。此lambda表达式int t2 = await Task.Run( ()=>Allocate2() ); 不返回()=>Allocate2()。为什么没有错误?

如何使用函数Task创建没有lambda表达式的任务?

Allocate

1 个答案:

答案 0 :(得分:5)

Track = "a" Time = "b" Info = "c" Channel = "d" Note = "e" Velocity = "f" 希望您将无参数Task.Run()Action传递给它。

可以将lambda分配给FuncAction(视情况而定),这就是为什么用lambda调用Func为你工作的原因。

如果您不想使用lambda,则必须显式创建Task.Run()Action,并将要调用的方法传递给Func的构造函数或Action

以下演示:

Func

OR:

static void Main()
{
    var task = Task.Run(new Action(MyMethod));
}

static void MyMethod()
{
    Console.WriteLine("MyMethod()");
}

请注意,如果方法需要一个或多个参数,则此方法无效。在那种情况下,您必须使用lambda。