将异步函数存储为变量

我有一个类似于这个问题的问题,但不同之处在于我在处理异步函数。

所以问题说我想在变量中存储一个方法(以后再调用它)

在syncrhonous函数的情况下

private delegate void eventmethod(); //(for a function without arguments and return void) private eventmethod MySavedEvent; void D() { } MySavedEvent = D; MySavedEvent(); 

但是如果该function实际上会发生什么

 Task D(); 

如何在那里定义代理?

基于任务的函数只是一个返回任务的方法。 Action用于返回void。 Func用于返回某些内容。 具有签名Task DoSomething()方法可以表示为Func ,因为它返回Task

例:

 void Main() { Execute().Wait(); } private static async Task Execute() { Console.WriteLine(DateTime.Now); await myFunc(); Console.WriteLine(DateTime.Now); } private static Func myFunc = async () => await Task.Delay(2000); 

编辑:

显然问题是关于任务中的返回类型。 没有区别; 无论是TaskTaskList还是Task> 。 这些是generics类型,但仍然只是一种返回类型。

例2:

 void Main() { Execute().Wait(); } private static async Task Execute() { Console.WriteLine(DateTime.Now); Console.WriteLine(await myFunc()); Console.WriteLine(await myFunc()); } private static Func> myFunc = async () => { await Task.Delay(2000); return DateTime.Now; };