首页 > 解决方案 > 在不并行触发的情况下定义任务

问题描述

您好,有什么方法可以在不触发任务的情况下定义任务?我需要在没有触发的情况下抓住一个任务对象。

 ------code-------------
    Task A=Task.Run(func1);
    Task B=Task.Run(func2);
    -----some more code----

在这个例子中,A任务在定义的行中被触发,与程序的其余部分并行(在另一个核心上)。

我希望能够指示何时根据 A 触发任务 B,但仍与程序的其余部分并行。

Something like :
    ---code---
    Task A= something without starting it
    Task B= something without starting it

    B.ContinueWith(A);
    ---code----

PS我想从主线程并行编排一些任务,对于这种情况我不需要Task.WhenAll/When Any

标签: c#async-awaittask-parallel-library

解决方案


你可以使用Func<Task>这样的:

async Task Main()
{
    var methodToInvoke = new Func<Task>(() => MyMethod())

    // Later on
    await methodToInvoke();
}

async Task MyMethod()
{
    await Task.Delay(5000);
}

推荐阅读