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

C# 如何在我的Windows服务之前启动MYSQL服务,c#,windows-services,C#,Windows Services,我有运行的windows服务程序,有时会抛出关于系统空引用的异常。经过我的调查,这是由于MySQL连接无法建立,因为启动计算机时MySQL实例尚未启动。如何解决这个问题 提前感谢本文可以为您提供有关代码服务依赖关系的提示: 本文可以为您提供有关如何编写服务依赖项的提示: 您可以在Windows中设置每个服务的依赖项 您可以进入控制面板->管理工具->服务或从命令行运行“Services.msc”。通过双击任何服务并转到Dependencies选项卡,您可以看到每个服务所依赖的内容 您的服务依赖于

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


提前感谢

本文可以为您提供有关代码服务依赖关系的提示:


本文可以为您提供有关如何编写服务依赖项的提示:


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

您可以进入控制面板->管理工具->服务或从命令行运行“Services.msc”。通过双击任何服务并转到Dependencies选项卡,您可以看到每个服务所依赖的内容

您的服务依赖于MySql服务,因此MySql应该在它的依赖项列表中

您可以将项目添加到依赖项中,以下是如何执行此操作的说明:


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

您可以进入控制面板->管理工具->服务或从命令行运行“Services.msc”。通过双击任何服务并转到Dependencies选项卡,您可以看到每个服务所依赖的内容

您的服务依赖于MySql服务,因此MySql应该在它的依赖项列表中

您可以将项目添加到依赖项中,以下是如何执行此操作的说明:


如果您想自己独立完成而不需要依赖项,请尝试以下代码

//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));
      }
}

如果您想自己独立完成而不需要依赖项,请尝试以下代码

//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));
      }
}

+1篇很好的链接文章,这篇文章直接去了游泳池我会参考这个链接,但当我将重新启动计算机2次后,它就会工作&一个空白消息框由计算机在消息框中显示两个按钮显示是或否,如果按是,它将重新启动计算机并按否,它不会做任何事情。为什么这个按钮由计算机显示+1个漂亮的链接文章,那个人直接去游泳池房间我会参考这个链接它可以工作,但当我重新启动计算机2次后它就可以工作了&一个空白的消息框由计算机显示在消息框中两个按钮显示是或否如果按是它将重新启动计算机并按否它不会做任何事情为什么这个按钮由计算机显示