在timerCallback函数中发生SQL连接错误时停止C#Window Service

时间:2016-07-14 12:54:45

标签: c# multithreading

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

有一个Window Service可以创建线程并调用函数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
    }
}

我尝试的一件事是在捕获错误后引发事件。并在事件处理程序中停止服务。我不知道这是否是处理它的最佳方式。

1 个答案:

答案 0 :(得分:0)

也许这会有所帮助:

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