gpt4 book ai didi

c# - 在 Window 服务中处理 WebApp.Start 实例的正确位置?

转载 作者:行者123 更新时间:2023-11-30 17:39:27 25 4
gpt4 key购买 nike

我正在编写一个 Windows 服务,它将自行托管一个 OWIN WebApi Web 服务。要启动 Web 服务,位置非常明显;在 ServiceBase 扩展类的 OnStart 方法中:

private IDisposable _webApiDataConnectionHost;

protected override void OnStart(string[] args) {
_webApiDataConnectionHost = WebApp.Start<OwinWebStartup>("...");
}

但是,我不确定在哪里处理网络应用程序。在 this example project ,他们在 OnStop 方法中处理它:

protected override void OnStop()
{
if(_server != null)
{
_server.Dispose();
}
base.OnStop();
}

但是鉴于这是一个 IDisposable,在服务重写 Dispose 方法时处理它是否正确?类似于以下内容:

protected override void Dispose(bool disposing) {
if (disposing) {
if (components != null) { components.Dispose(); }

// Dispose of our web app if it exists...
if (_webApiDataConnectionHost != null) {
_webApiDataConnectionHost.Dispose();
}
}

base.Dispose(disposing);
}

哪个是处置网络应用程序的合适位置?

最佳答案

我通常设置任何服务的方式是实现 IDisposable 接口(interface)并从 OnStop 调用 Dispose 方法。我的 OnStop 通常与我的 OnPause 相同,只是额外调用了 Dispose。可以从msdn看推荐 here .

关于c# - 在 Window 服务中处理 WebApp.Start 实例的正确位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35554846/

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