【问题标题】:public static Task Run(Func<Task> function);公共静态任务运行(Func<Task> 函数);
【发布时间】:2018-10-09 16:25:10
【问题描述】:

任何人都可以提供任何示例/代码 sn-p 以使用以下方法。

public static Task Run(Func&lt;Task&gt; function);

我正在尝试了解如何使用上述重载方法,但在 web.xml 中没有找到任何代码。

据我了解,此方法采用func delegate 作为输入参数,它应该返回一个任务,所以请提供一些代码 sn-p。

谢谢, 维诺德

【问题讨论】:

标签: c#


【解决方案1】:

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

    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&lt;Task&gt;)帮你:

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

        // do something else...

        Console.ReadLine();
    }

【讨论】:

    猜你喜欢
    • 2013-05-13
    • 1970-01-01
    • 2019-10-02
    • 2010-10-19
    • 2014-12-28
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    相关资源
    最近更新 更多