如何在我的Windows服务之前启动MYSQL服务

本文关键字:服务 启动 MYSQL Windows 我的 | 更新日期: 2023-09-27 18:02:29

我有运行的windows服务程序,有时会抛出关于系统空引用的异常。经过我的调查,这是由于MySQL连接无法建立,由于MySQL实例尚未启动计算机时。如何解决这个问题??

thanks in advance

如何在我的Windows服务之前启动MYSQL服务

您可以在Windows中设置每个服务的依赖项。

您可以进入控制面板->管理工具->服务(或运行' Services ')。从命令行输入Msc)。通过双击任意一个服务并转到Dependencies选项卡,你可以看到每个服务所依赖的内容。

你的服务依赖于MySql服务,所以MySql应该在它的依赖列表中。

您可以向依赖项添加项,下面是如何执行此操作的描述:

https://serverfault.com/questions/24821/how-to-add-dependency-on-a-windows-service-after-the-service-is-installed

本文可以提示您如何编写服务依赖关系:

http://bloggingabout.net/blogs/jschreuder/archive/2006/12/07/How-to_3A00_-Code-Service-Dependencies.aspx

如果您想自己完成它,请尝试下面的代码

//Check if service is running
ServiceController mysqlServiceController = new ServiceController();
mysqlServiceController.ServiceName = "MySql";
var timeout = 3000;
//Check if the service is started
if (mysqlServiceController.Status == System.ServiceProcess.ServiceControllerStatus.Stopped
                || mysqlServiceController.Status == System.ServiceProcess.ServiceControllerStatus.Paused)
{
      mysqlServiceController.Start();
      try
      {
           //Wait till the service runs mysql
           ServiceController.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.Running, new TimeSpan(0, timeout, 0));
      }
      catch (System.ServiceProcess.TimeoutException)
      {
          //MessageBox.Show(string.Format("Starting the service '"{0}'" has reached to a timeout of ({1}) minutes, please check the service.", mysqlServiceController.ServiceName, timeout));
      }
}