C# 如何停止使用Quartz的服务?

C# 如何停止使用Quartz的服务?,c#,service,quartz-scheduler,msmq,quartz.net,C#,Service,Quartz Scheduler,Msmq,Quartz.net,我不熟悉MSMQ、Quartz和服务。我有一个服务,如果抛出异常,将发送通知电子邮件。我正在试图找到一种方法,在发送电子邮件后暂停或停止服务,这样我就不会一次又一次地收到相同的异常电子邮件。我只需要一次电子邮件。 到目前为止,我已经尝试: _scheduler.DeleteJob(jobKey) _计划外作业(triggerKey) _scheduler.Shutdown() _调度程序中断(jobKey) serviceController.Stop() serviceController.P

我不熟悉MSMQ、Quartz和服务。我有一个服务,如果抛出异常,将发送通知电子邮件。我正在试图找到一种方法,在发送电子邮件后暂停或停止服务,这样我就不会一次又一次地收到相同的异常电子邮件。我只需要一次电子邮件。 到目前为止,我已经尝试:

  • _scheduler.DeleteJob(jobKey)
  • _计划外作业(triggerKey)
  • _scheduler.Shutdown()
  • _调度程序中断(jobKey)
  • serviceController.Stop()
  • serviceController.Pause()

  • _计划程序。重新计划eJob(键,ExceptionRegiger) 我不确定我是否理解调度器是如何与服务绑定的。你是说Windows NT服务吗?调度程序是否运行启动服务的作业?无论哪种方式,当服务出现错误时,只需关闭服务本身。调度程序与此无关

         public void CreateRegistration()
         {
            this._scheduler = StdSchedulerFactory.GetDefaultScheduler();
            CreateJob();
            CreateTrigger();
            RegisterWithScheduler();
         }
    
         public void CreateJob()
         {
           _scheduler.Start();
           this._job = JobBuilder.Create<RecieveMessageJob>()
                        .WithIdentity("ReceiveMessagesJob",      
                                      this._messageGroupName)
           .Build();
         }
    
         public void CreateTrigger()
         {
           _trigger = TriggerBuilder.Create()
              .WithIdentity(this._triggerName, this._messageGroupName)
              .StartNow()
              .WithSimpleSchedule(x => x
                    .WithIntervalInMinutes(1)
                    .RepeatForever())
            .Build();
          }
    
          public void RegisterWithScheduler()
          {
                _scheduler.ScheduleJob(_job, _trigger);
          }
    
    public void PauseService()
    {   
      TriggerKey triggerKey = this._trigger.Key;
      JobKey jobKey = this._job.Key;
    
            // Define a new Trigger 
            //ITrigger exceptionTrigger = TriggerBuilder.Create()
            //      .WithIdentity("exceptionTrigger", this._messageGroupName)
            //      .StartNow()
            //      .WithSimpleSchedule(x => x
            //          .WithIntervalInMinutes(0))
            //      .Build();
    
            // tell the scheduler to remove the old trigger with the given key, and put the new one in its place
            //_scheduler.RescheduleJob(key, exceptionTrigger);
    
            //_scheduler.DeleteJob(jobKey);
    
            //_scheduler.UnscheduleJob(triggerKey);
    
            //_scheduler.Shutdown();
    
            //_scheduler.Interrupt(jobKey);
    
            //ServiceController serviceController = new ServiceController("MessagingService");
            //serviceController.Stop();
            //serviceController.Pause();
        }