C# 3.0 流程启动与维护;单击按钮结束

C# 3.0 流程启动与维护;单击按钮结束,c#-3.0,C# 3.0,我创建了一个应用程序。我创建了一个按钮。单击按钮后,流程开始。现在,当我按下应用程序的关闭('X')按钮时,应用程序关闭。我希望所有这些都发生在单击按钮时,即当我第一次单击按钮时,它应该启动流程&一旦再次单击同一按钮,流程应该关闭 如果应用程序已在运行,即首次按下按钮,则可以使用存储真值的标志。然后使用一个简单的if条件调用相应的函数。在这里。注释在代码中 using System.Diagnostics; /// <summary> /// Process started by

我创建了一个应用程序。我创建了一个按钮。单击按钮后,流程开始。现在,当我按下应用程序的关闭('X')按钮时,应用程序关闭。我希望所有这些都发生在单击按钮时,即当我第一次单击按钮时,它应该启动流程&一旦再次单击同一按钮,流程应该关闭

如果应用程序已在运行,即首次按下按钮,则可以使用存储真值的标志。然后使用一个简单的
if
条件调用相应的函数。

在这里。注释在代码中

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;
        }
    }
}
使用系统诊断;
/// 
///由我们的应用程序启动的进程
/// 
工艺过程;
私有无效按钮1\u单击(对象发送者,事件参数e)
{
//尚未启动或用户已将其关闭
if(process==null | | process.HasExited)
{
//打开
尝试
{
process=process.Start(“notepad.exe”);
}
捕获(例外情况除外)
{
//将错误告知用户
}
}
//它开始了
其他的
{
//这里很多事情都会出错。
//甚至像用户自己关闭应用程序这样简单的事情
尝试
{
//发送应用程序指令以关闭自身
如果(!process.CloseMainWindow())
{
//无法遵守-必须处死
//仁慈的人可能会再试几次
//行刑前
process.Kill();
}
}
捕获(例外情况除外)
{
//将错误告知用户
}
最后
{
//所以生命周期可以重新开始
进程=空;
}
}
}

非常感谢这很好,现在我在单击按钮时打开我的应用程序,并通过关闭按钮('X')再次关闭它。当我再次打开应用程序时,需要双击按钮。我希望通过单击一个按钮完成此操作。请帮助。我已更改了我的示例。您将在方法开头找到| | | process.HasExited |部分。我还有一个疑问,就是如何在单击按钮时关闭一个windows窗体如果您有对其他窗体的引用,那么它就是otherForm.close();如果(process==null | | | process.HasExited)如果((s1==null)| |(s1.Close())我写了这一行而不是上面的那一行,我得到了以下错误:运算符“| |”不能应用于“bool”和“void”类型的操作数。