Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 后台工作人员和处理_C#_Wpf_Dispose - Fatal编程技术网

C# 后台工作人员和处理

C# 后台工作人员和处理,c#,wpf,dispose,C#,Wpf,Dispose,我有一个Usercontrol,用于重新启动应用程序的已安装服务。 我正在使用后台工作人员来完成此任务 我正在使用ServiceController重新启动服务。 在DO_工作中,我编写了以下代码 serviceController.Refresh(); if (serviceController.Status == ServiceControllerStatus.Running) { s

我有一个Usercontrol,用于重新启动应用程序的已安装服务。 我正在使用后台工作人员来完成此任务

我正在使用ServiceController重新启动服务。 在DO_工作中,我编写了以下代码

 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中取消附加事件?已更新问题。问题的任何更新。。