Question

Je suis en train d'écrire une petite application de la console (sera RAN en tant que service) qui commence essentiellement une application Java quand il est en cours d'exécution, se ferme lui-même vers le bas si l'application Java se ferme et se ferme vers le bas l'application Java si elle se ferme.

Je crois avoir les deux premiers fonctionnent correctement, mais je ne sais pas comment détecter lorsque l'application .NET est en cours d'arrêt afin que je puisse arrêter l'application Java avant que cela se produise. Google recherche retourne juste un tas de choses sur la détection de Windows arrêter.

Quelqu'un peut-il me dire comment je peux gérer cette partie et si le reste semble bien?

namespace MinecraftDaemon
{
    class Program
    {
        public static void LaunchMinecraft(String file, String memoryValue)
        {
            String memParams = "-Xmx" + memoryValue + "M" + " -Xms" + memoryValue + "M ";
            String args = memParams + "-jar " + file + " nogui";
            ProcessStartInfo processInfo = new ProcessStartInfo("java.exe", args);
            processInfo.CreateNoWindow = true;
            processInfo.UseShellExecute = false;

            try
            {
                using (Process minecraftProcess = Process.Start(processInfo))
                {
                    minecraftProcess.WaitForExit();
                }
            }
            catch
            {
                // Log Error
            }
        }

        static void Main(string[] args)
        {
            Arguments CommandLine = new Arguments(args);

            if (CommandLine["file"] != null && CommandLine["memory"] != null)
            {
                // Launch the Application
                LaunchMinecraft(CommandLine["file"], CommandLine["memory"]);
            }
            else
            {
                LaunchMinecraft("minecraft_server.jar", "1024");
            }
        }
    }
}
Était-ce utile?

La solution

Vous devez vous inscrire cet événement dans votre méthode principale:

Application.ApplicationExit += new EventHandler(AppEvents.OnApplicationExit);

et ajoutez le gestionnaire d'événements

public void OnApplicationExit(object sender, EventArgs e)
{
    try
    {
        Console.WriteLine("The application is shutting down.");
    }
    catch(NotSupportedException)
    {
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top