通用lambda表达式

时间:2013-10-08 08:21:22

标签: c# asynchronous task async-await

我有问题:我无法知道我称这种方法:

public static Task<TResult> Run<TResult>(
    Func<Task<TResult>> function
)

如果您没有我知道的通用参数,我可以这样做:

Task.Run( () => { Task.Delay(10000) });

你能告诉我我怎么做到这一点以及为什么?

问候!

2 个答案:

答案 0 :(得分:0)

您不知道如何调用泛型和异步方法? TResult是一个占位符。使用它时,您需要将TResult替换为实际的类。此外,您还记得等待结果非常重要。

var myResultVar = await Task.Run<MyResult> (() => MyFunctionWhichReturns() );

public MyResult MyFunctionWhichReturns()
{
   return new MyResult();
}

答案 1 :(得分:0)

您正在调用Task.Run方法的另一个重载:

public static Task Run(Func<Task> function)

所有重载的概述是given in the linked MSDN page