Ответы пользователя по тегу Mono
  • Почему закрывается "дочерний" процесс консольного приложения?

    @Melz
    Только что попробовал на Win10 - работает. Виртуалку с моно я недавно грохнул )

    Вы почти угадали :) Есть два (известных мне) способа.

    1. Нужно использовать

    System.Diagnostics.Process.Start(@"C:\windows\system32\notepad.exe");

    Этот способ, тогда дочерний процесс создается с флагом HasExited. Грубо говоря, даете понять что создавший его процесс умер еще до создания и система тогда создаст его самого по себе.

    2. Использовать WaitForExit

    // Start the child process.
    Process p = new Process();
    // Redirect the error stream of the child process.
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardError = true;
    p.StartInfo.FileName = @"C:\windows\system32\notepad.exe";
    p.Start();
    // Do not wait for the child process to exit before
    // reading to the end of its redirected error stream.
    // p.WaitForExit();
    // Read the error stream first and then wait.
    //string error = p.StandardError.ReadToEnd();
    p.WaitForExit();

    Мы просто говорим чайлду что мол жди закрытия парента бесконечно.

    В первом случае консольное приложение закрывается само, оставляя открытым блокнот. Во втором - остается открытым, но при закрытии блокнот все равно остается открытым.

    Как оно поведет себя на моно не знаю )) Удачи )
    Ответ написан
    Комментировать