公共静态任务运行(Func <任务>函数);

时间:2018-10-09 05:13:34

标签: c#

任何人都可以提供任何示例/代码段来使用以下方法。

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

我试图了解如何使用上述重载方法,但是我在网络上找不到任何代码。

据我了解,此方法将func delegate作为输入参数,该参数应返回Task,因此请提供一些代码段。

谢谢, Vinod

1 个答案:

答案 0 :(得分:3)

此重载通常用于将任务卸载到线程池线程。
假设您在控制台应用程序中编写了此方法:

    private static async Task DoSomeHeavyInitializationAsync()
    {
        // some heavy calculations;

        // some async I/O (e.q. reading from database, file, etc);
        await SomeMethodAsync(...);

        // again some heavy calculations, async I/O, etc...
    }

现在,您想从Program.Main调用它,并保持Main的响应速度:如果用户不想等待应用初始化,则可以按[enter]并终止该应用。

因此,您需要卸载任务以确保其代码不会在主线程上运行。 Task Run(Func<Task>)可为您提供帮助:

    static void Main(string[] args)
    {
        Task.Run(DoSomeHeavyInitializationAsync);

        // do something else...

        Console.ReadLine();
    }