我有一个Usercontrol,用于重新启动应用程序的已安装服务。 我正在使用Background worker来完成这项任务。
我正在使用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;
}
}
}
}