BackgroundService .net core 中 ExecuteAsync 和 StartAsync 方法的区别
Difference between ExecuteAsync and StartAsync methods in BackgroundService .net core
从遗留的 .NET Framework 迁移我需要创建一个长时间的后台进程工作者。
查看文档我发现了一个BackgroundService
class,它就是用于这种目的的。但是我偶然发现了两个相同的(就我的观点而言)方法 ExecuteAsync()
和 StartAsync()
有人可以向我解释一下它们之间的主要区别是什么吗?
这是某种隔离原则吗?我们有一种方法可以将数据设置为 "constructor" 并且我们有一种方法可以实际做事?
BackgroundService
的默认行为是 StartAsync
调用 ExecuteAsync
,请参阅 code。这是默认值,StartAsync
是 virtual
,因此您可以覆盖它。
请注意,只有 StartAsync
is public
and ExecuteAsync
protected
(和 abstract
)。所以从外面 StartAsync
被称为
如果您创建 BackgroundService
的子类,您 必须 实现 ExecuteAsync
(因为它是 abstract
)。那应该做你的工作。此外,您 可以 覆盖 StartAsync
(因为它是 virtual
),但这仅在特殊情况下才需要。
那么为什么会有 StartAsync 和 ExecuteAsync?
您可以通过实施 IHostedService
创建服务。该接口有 StartAsync
和 StopAsync
.
BackgroundService
是 IHostedService
的(基本)实现,可用于长 运行 任务。这个定义了摘要ExecuteAsync
.
总结
- 从
BackgroundService
继承时,实现ExecuteAsync
- 实施
IHostedService
时,实施StartAsync
和StopAsync
阅读更多
- Background tasks with hosted services in ASP.NET Core
- BackgroundService in .NET Core for long running tasks - 此处还显示了 IHostedService 的其他实现,例如 TimedHostedService
从遗留的 .NET Framework 迁移我需要创建一个长时间的后台进程工作者。
查看文档我发现了一个BackgroundService
class,它就是用于这种目的的。但是我偶然发现了两个相同的(就我的观点而言)方法 ExecuteAsync()
和 StartAsync()
有人可以向我解释一下它们之间的主要区别是什么吗? 这是某种隔离原则吗?我们有一种方法可以将数据设置为 "constructor" 并且我们有一种方法可以实际做事?
BackgroundService
的默认行为是 StartAsync
调用 ExecuteAsync
,请参阅 code。这是默认值,StartAsync
是 virtual
,因此您可以覆盖它。
请注意,只有 StartAsync
is public
and ExecuteAsync
protected
(和 abstract
)。所以从外面 StartAsync
被称为
如果您创建 BackgroundService
的子类,您 必须 实现 ExecuteAsync
(因为它是 abstract
)。那应该做你的工作。此外,您 可以 覆盖 StartAsync
(因为它是 virtual
),但这仅在特殊情况下才需要。
那么为什么会有 StartAsync 和 ExecuteAsync?
您可以通过实施 IHostedService
创建服务。该接口有 StartAsync
和 StopAsync
.
BackgroundService
是 IHostedService
的(基本)实现,可用于长 运行 任务。这个定义了摘要ExecuteAsync
.
总结
- 从
BackgroundService
继承时,实现ExecuteAsync
- 实施
IHostedService
时,实施StartAsync
和StopAsync
阅读更多
- Background tasks with hosted services in ASP.NET Core
- BackgroundService in .NET Core for long running tasks - 此处还显示了 IHostedService 的其他实现,例如 TimedHostedService