mysql - System.ServiceProcess ServiceController en .NETCore

CorePress2024-01-25  159

Quiero controlar un servicio MySQL desde un proyecto .NETCore. Pude hacer esto en un proyecto .NETFramework 4.7 con una referencia a System.ServiceProcess.dll. Los proyectos .NETCore parecen utilizar un System.ServiceProcess.dll diferente que tiene menos funcionalidad.

¿Existe alguna forma diferente de controlar un servicio MySQL usando .NETCore? ¿Puedo simplemente hacer referencia a la dll .NETFramework desde un proyecto .NETCore?

Es posible que desee reelaborar las etiquetas... Parece que no es específico de MySQL, pero podría aplicarse a cualquier servicio. Parece .NET Core específico cómonunca.

- poco pegajoso

28/03/2021 a las 17:35

¿Hay algo especial que quieras hacer con el servicio? Si es solo detener/iniciar, etc., puede consultar este enlace: stackoverflow.com/questions/41014513/…; de lo contrario, deberá contarnos más sobre lo que desea hacer con el servicio

- Sr. Apnea

28/03/2021 a las 18:40



------------------------------------

Lo hago funcionar. Es el siguiente:

Instalar System.ServiceProcPaquete ess.ServiceController usando nuget de Visual Studio (Herramientas > Administrador de paquetes Nuget > Administrar paquetes Nuget para la solución) Utilice el siguiente código como ejemplo. Este enlace explicará cómo utilizar el código: https://learn.microsoft.com/en-us/dotnet/api/system.serviceprocess.servicecontroller.start?view=dotnet-plat-ext-6.0

Compruebe si el servicio Alerter está iniciado.

ServiceController sc  = new ServiceController();
sc.ServiceName = "Alerter";
Console.WriteLine("The Alerter service status is currently set to {0}", sc.Status.ToString());

if (sc.Status == ServiceControllerStatus.Stopped)
{
    // Start the service if the current status is stopped.
    
Console.WriteLine("Starting the Alerter service...");
try
{
// Start the service, and wait until its status is "Running".
    sc.Start();
    sc.WaitForStatus(ServiceControllerStatus.Running);

    // Display the current service status.
    Console.WriteLine("The Alerter service status is now set to {0}.", sc.Status.ToString());
 }
 catch (InvalidOperationException)
 {
     Console.WriteLine("Could not start the Alerter service.");
 }
}
Debe abrir su aplicación .exe haciendo clic derecho > privilegios de administrador, pero la mejor manera es agregar un archivo de manifiesto para que cuando se abra la aplicación solicite privilegios de administrador. Puedes comprobar cómo hacerlo aquí: ¿Cómo solicitar permisos de administrador cuando se inicia el programa?



------------------------------------

Lo que está buscando es algo llamado BackgroundService en Net Core. Le permite ejecutar un proceso de ejecución prolongada mientras se ejecuta la aplicación. Esto debería ayudarte a empezar:

https://learn.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-5.0&tabs=visual-studio

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare