在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
好的讓我檢查一下 –