公共静态Task Run(Func <Task>函数);

虚拟机

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

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

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

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

谢谢,Vinod

丹尼斯

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

    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();
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

运行异步lambda时,使用Task.Run(func)还是新的Func <Task>(func)()?

用SemaphoreSlim节流-“ Task.Run()”与“ new Func <Task>()”

为什么通话不明确?'Task.Run(Action)'和'Task.Run(Func <Task>)'

在静态构造函数中调用时,用Task.Run(...)包装方法会挂起

CS0121 'Task.Run<TResult>(Func<TResult>)' 和 'Task.Run(Func<Task>)' 之间的调用不明确

重构两个相同的函数,分别接收回调函数Func <Task <T >>和Func <T>

Task.Run在静态初始化程序中

为什么调用task.run函数时我的异步函数挂起

替代Task.Run

Task.FromResult()与Task.Run()

触发并忘记异步Task与Task.Run

当从当前函数内部可见时,我是否应该将 CancellationToken 传递给 Task.Run()

在UI构造函数中使用Task.Run()时处理异常

在 void 函数中使用 Task.Run 是错误还是不好的做法?

将常规和异步匿名函数传递给Task.Run以进行异步工作的区别

如何等待Func <Task <string >>?

如何使用Func <Task <T >>语法?

将lambda异步到Expression <Func <Task >>

从异步lambda动作转换为Func <Task>?

返回using块中间的Func <Task>

_ = Task.Run与异步void | Task.Run与异步子

Task.Run(()MethodName())并等待Task.Run(async()=> MethodName())

要Task.Run还是不去Task.Run

创建函数对象的packaged_task

返回Task(Of String)或String的异步函数?

WebApi中的Windows Task Scheduler或TaskService函数

Task.Delay() 函数的 C# 问题

取消 Task.Run 作业

在Task.Run中动态