Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
当timerCallback函数中发生SQL连接错误时,停止C#窗口服务_C#_Multithreading - Fatal编程技术网

当timerCallback函数中发生SQL连接错误时,停止C#窗口服务

当timerCallback函数中发生SQL连接错误时,停止C#窗口服务,c#,multithreading,C#,Multithreading,我是线程编程的新手,最近分配给我的一个问题是使用线程。我需要你的帮助以最好的方式解决这个问题 有一个窗口服务,它创建线程并调用函数StartScheduler。此函数进一步创建一个线程,并调用函数StartJob。在StartJob函数中,创建TimerCallback对象,并每隔50秒调用函数LoadandRunJob函数以加载和执行作业 注意:上面指定的每个线程都是在单独的类中创建的。所以有多个类 我的要求是在sql server连接断开并且函数LoadAndRunJob中出现错误时停止窗口

我是线程编程的新手,最近分配给我的一个问题是使用线程。我需要你的帮助以最好的方式解决这个问题

有一个窗口服务,它创建线程并调用函数StartScheduler。此函数进一步创建一个线程,并调用函数StartJob。在StartJob函数中,创建TimerCallback对象,并每隔50秒调用函数LoadandRunJob函数以加载和执行作业

注意:上面指定的每个线程都是在单独的类中创建的。所以有多个类

我的要求是在sql server连接断开并且函数LoadAndRunJob中出现错误时停止窗口服务

示例代码

private void StartJob ()
{
    _timerCallback = new TimerCallback(LoadAndRunJob);

    //Schedule the requery to happen every 50 seconds.
    _timer = new Timer(_timerCallback, null, 50000, 50000);
}

private void LoadAndRunJob(Object state)
{

    try
    {
        //Here is the code to load and execute the jobs   
    }
    catch
    {
        //Require code here to stop the service
    }
}
我尝试的一件事是在捕获错误后引发事件。并在事件处理程序中停止服务。我不知道这是否是最好的处理方法。

也许这有帮助:

catch
{
   new System.ServiceProcess.ServiceController("YourServiceName").Stop();
}
也许这有助于:

catch
{
   new System.ServiceProcess.ServiceController("YourServiceName").Stop();
}

老实说,我会和工作中的人讨论这件事。有一些问题要问,例如,为什么你需要停止服务而不是记录和提醒某人?像这样的服务通常会在退出之前尝试做几次工作。若其他作业正常工作,而另一个作业不正常,那个该怎么办?实际上,当SQL连接断开时,该服务将无法执行任何任务,但仍显示为正在运行。所以客户希望在SQL连接由于任何原因中断时停止服务。老实说,我会和工作人员讨论这个问题。有一些问题要问,例如,为什么你需要停止服务而不是记录和提醒某人?像这样的服务通常会在退出之前尝试做几次工作。若其他作业正常工作,而另一个作业不正常,那个该怎么办?实际上,当SQL连接断开时,该服务将无法执行任何任务,但仍显示为正在运行。所以,客户端希望在SQL连接由于任何原因中断时停止该服务。