在asp.net核心中实现类似目标的方法是使用IApplicationLifetime接口。它有两个特性的两个CancellationToken
S,
ApplicationStopping
:
主机正在执行正常关机。请求可能仍然是 处理。关机阻塞,直到此事件结束。
而且ApplicationStopped
:
主机已完成正常关机。所有的请求应该是 完全处理。关机阻塞,直到此事件结束。
此接口默认在容器中注册,因此您可以将其注入到任何需要的位置。您先前称为RegisterObject
,你改为调用
// or ApplicationStopped
var token = lifeTime.ApplicationStopping.Register(OnApplicationStopping);
private void OnApplicationStopping() {
// will be executed on host shutting down
}
而且你OnApplicationStopping
回调函数将在运行时主机关机时调用。在那里你以前会叫UnregisterObject
,你只是从处置令牌CancellationToken.Register
返回:
token.Dispose();
您也可以通过这些取消标记到希望取消标记,并且不应该被关闭意外中断操作。
来源
2017-12-18 06:53:40
Evk
好的让我检查一下 –