Начало и конец процесса при нажатии кнопки - PullRequest
0 голосов
/ 21 марта 2012

Я создал приложение. В нем я создал кнопку. После нажатия на кнопку запускается процесс. Теперь, когда я нажимаю кнопку закрытия ('X') приложения, приложение закрывается. Я хочу, чтобы всеэто происходит по нажатию кнопки, т.е. когда я нажимаю кнопку в первый раз, она должна начать процесс, и как только снова нажать эту же кнопку, процесс должен завершиться.

Ответы [ 2 ]

1 голос
/ 21 марта 2012

Вот оно.Комментарии внутри кода.

using System.Diagnostics;

/// <summary>
/// Process started by our app
/// </summary>
Process process;

private void button1_Click(object sender, EventArgs e)
{
    //  Haven't been started yet or user closed it
    if (process == null || process.HasExited)
    {
        //  Do open
        try
        {
            process = Process.Start("notepad.exe");
        }
        catch (Exception ex)
        {
            //  Inform user about error
        }
    }
    //  It is started
    else
    {
        //  many a thing can go wrong here. 
        //  Even something as simple as user closing the app himself
        try
        {
            //  Send app instruction to close itself
            if (!process.CloseMainWindow())
            {
                //  Unable to comply - has to be put to death
                //  Merciful people might give it a few retries 
                //  before execution
                process.Kill();
            }
        }
        catch (Exception ex)
        {
            //  Inform user about error
        }
        finally
        {
            //  So the cycle of life can start again
            process = null;
        }
    }
}
0 голосов
/ 21 марта 2012

Вы можете использовать флаги, которые хранят истинное значение, если приложение уже запущено, т.е. если кнопка нажата в первый раз.Затем используйте простое условие if для вызова соответствующей функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...