我有一个用户控件,用于重新启动应用程序的已安装服务。我正在使用后台工作人员来完成这项任务。
我正在使用 ServiceController 重新启动服务。在 DO_WORK 中,我编写了以下代码..
serviceController.Refresh();
if (serviceController.Status == ServiceControllerStatus.Running)
{
serviceController.Stop();
serviceController.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromMinutes(1));
}
serviceController.Start();
serviceController.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromMinutes(1));
现在,如果我关闭放置此用户控件的窗口,那么 serviceController 将被释放。
如果我重新启动了服务并且它仍处于启动阶段并且如果用户关闭了窗口,那么 serviceController 将被释放并且 do_work 将引发错误。
这个场景中的最佳实践应该是什么?
更新:我可以这样做吗?
public void Dispose(bool disposing)
{
if (!this.isDisposed)
{
if (disposing)
{
if (this.Worker != null)
{
this.Worker.DoWork -= this.Worker_DoWork;
this.Worker.RunWorkerCompleted -= this.Worker_RunWorkerCompleted;
}
}
}
}