C# 后台工作人员和处理
我有一个Usercontrol,用于重新启动应用程序的已安装服务。 我正在使用后台工作人员来完成此任务 我正在使用ServiceController重新启动服务。 在DO_工作中,我编写了以下代码C# 后台工作人员和处理,c#,wpf,dispose,C#,Wpf,Dispose,我有一个Usercontrol,用于重新启动应用程序的已安装服务。 我正在使用后台工作人员来完成此任务 我正在使用ServiceController重新启动服务。 在DO_工作中,我编写了以下代码 serviceController.Refresh(); if (serviceController.Status == ServiceControllerStatus.Running) { s
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将抛出一个错误
在这个senario中,最佳实践应该是什么
更新:我可以这样做吗
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;
}
}
}
}
是否可以在dispose中取消附加事件?已更新问题。问题的任何更新。。