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

问题描述 投票:2回答:1

从旧版.NET框架中迁移,我需要创建一个长时间的后台进程工作程序。

查看文档,我发现了一个BackgroundService类,该类用于这种目的。但是我偶然发现了两个相同的方法(以我的观点)ExecuteAsync()StartAsync()

有人可以向我解释它们之间的主要区别是什么?这是某种隔离原则吗?我们有一种将数据设置为“构造函数”的方法,而我们有一种实际做事的方法?

c# .net-core migration backgroundworker
1个回答
0
投票

BackgroundService的默认行为是StartAsync调用ExecuteAsync,请参阅code。可以说是默认设置,因为StartAsyncvirtual,所以您可以覆盖它。

[请注意,只有StartAsyncStartAsyncpublicExecuteAsync(和ExecuteAsync)。因此,从外部protected称为

如果创建abstract的子类,则必须实现StartAsync(因为它是BackgroundService)。那应该做你的工作。此外,您可以覆盖ExecuteAsync(因为它是abstract),但这仅在特殊情况下才需要。

那么为什么会有StartAsync和ExecuteAsync?

您可以通过实现StartAsync创建服务。该接口具有virtualIHostedService

IHostedServiceStartAsync的(基本)实现,可用于长时间运行的任务。这个定义了摘要StopAsync

摘要

  • BackgroundService继承时,实施IHostedService
  • [实现ExecuteAsync时,实现BackgroundServiceExecuteAsync

阅读更多

  • IHostedService
  • StartAsync-IHostedService的其他实现也显示在这里,如TimedHostedService
© www.soinside.com 2019 - 2024. All rights reserved.