gpt4 book ai didi

c# - BackgroundService .net 核心中 ExecuteAsync 和 StartAsync 方法之间的区别

转载 作者:行者123 更新时间:2023-12-03 15:26:47 26 4
gpt4 key购买 nike

从旧版 .NET Framework 迁移,我需要创建一个长时间的后台进程 worker 。

查看文档我发现了 BackgroundService类,用于这种目的。但是我偶然发现了两种相同的(就我的观点而言)方法ExecuteAsync()StartAsync()
有人可以向我解释它们之间的主要区别是什么吗?
是不是某种隔离原则——我们有一种将数据设置为“构造器”的方法,我们有一种实际做事的方法?

最佳答案

BackgroundService 的默认行为是StartAsync来电ExecuteAsync ,见 code .这是一个默认值,StartAsyncvirtual所以你可以覆盖它。
请注意,只有 StartAsync public ExecuteAsync protected (和 abstract )。所以从外面看StartAsync叫做
如果您创建 BackgroundService 的子类,你必须实现ExecuteAsync (因为它是 abstract )。那应该做你的工作。你也可以覆盖 StartAsync (因为它是 virtual ),但这仅在特殊情况下才需要。
那么为什么会有 StartAsync 和 ExecuteAsync 呢?
您可以通过实现 IHostedService 创建服务.该界面有StartAsyncStopAsync .BackgroundServiceIHostedService 的(基本)实现,并且可以用于长时间运行的任务。这个定义了摘要 ExecuteAsync .
总之

  • BackgroundService 继承时, 实现 ExecuteAsync
  • 实现时IHostedService , 实现 StartAsyncStopAsync

  • 阅读更多
  • Background tasks with hosted services in ASP.NET Core
  • BackgroundService in .NET Core for long running tasks - 此处还显示了 IHostedService 的其他实现,例如 TimedHostedService
  • 关于c# - BackgroundService .net 核心中 ExecuteAsync 和 StartAsync 方法之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60356396/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com