要使用此方法:
public static Task Run(Action action)
Run Code Online (Sandbox Code Playgroud)
我只想写:
void MyMethod(){ //do something }
Task t = Task.Run(new Action(MyMethod));
Run Code Online (Sandbox Code Playgroud)
但是我不明白如何使用以下重载
public static Task Run(Func<Task> f)
Run Code Online (Sandbox Code Playgroud)
msdn提到返回的任务是"f返回的任务的代理",这对我来说更加困惑.代理是什么意思,我将如何调用此方法?
Func<T>是一个通用委托 - 这是它的完整签名:
public delegate TResult Func<out TResult>()
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它表示一个不带参数的函数,并返回类型的实例TResult。在 的情况下Func<Task>,TResult是Task。
这意味着您可以执行以下操作:
public Task MyAsyncMethod() { ... }
Task.Run(MyAsyncMethod);
Run Code Online (Sandbox Code Playgroud)
这会将您的方法转换MyAsyncMethod为类型的委托Func<Task>并将其传递给Task.Run. 它是语法糖Task.Run( new Func<Task>(MyAsyncMethod) );
msdn提到返回的任务是“f返回的任务的代理”,这让我更加困惑(代理是什么意思?)
这意味着将简单地包装is anotherTask.Run返回的任务。MyAsyncMethodTask
| 归档时间: |
|
| 查看次数: |
1677 次 |
| 最近记录: |