当计时器回调函数中发生 SQL 连接错误时停止 C# 窗口服务

本文关键字:错误 服务 窗口 连接 SQL 回调 计时器 函数 | 更新日期: 2023-09-27 17:56:53

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

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

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

我的要求是在sql服务器连接断开并且在函数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
    }
}

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

当计时器回调函数中发生 SQL 连接错误时停止 C# 窗口服务

也许这会有所帮助:

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