Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#formclosing事件和循环_C#_Loops - Fatal编程技术网

C#formclosing事件和循环

C#formclosing事件和循环,c#,loops,C#,Loops,如果我必须再申报一点,请告诉我,现在有点晚了 我有一个小问题,这个代码不断循环:( 我有这个 if (MessageBox.Show("Are you sure you want to quit?", "Confirm Quit", MessageBoxButtons.YesNo) == DialogResult.Yes) { Stop(); _exited = true; foreach (Process x in Process.GetProcesses())

如果我必须再申报一点,请告诉我,现在有点晚了

我有一个小问题,这个代码不断循环:(

我有这个

if (MessageBox.Show("Are you sure you want to quit?", "Confirm Quit", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
    Stop();
    _exited = true;

    foreach (Process x in Process.GetProcesses())
    {
        while (x.Id == _processID)
        {
            Application.Exit();
            e.Cancel = true;
            return;
        }
    }
}
描述 它一直在循环,因为你在这个方法中调用了
Application.Exit()
。我不知道你想做什么,但我想你想问用户是否真的想关闭这个应用。 如果您的设置
e.Cancel=true
意味着您取消了活动,因此在您的情况下,您可以取消以关闭应用程序

因此,如果您询问“确定要退出”并且用户选择“否”,您应该设置
e.Cancel=true
,如果不设置,则什么也不做,因为
e.Cancel
的默认值是
false

样品
//创建进程列表
私有列表进程=新列表();
//如果你开始一个过程
进程myProcess=/;
进程。添加(myProcess);
//收盘时
私有作废Form1\u FormClosing(对象发送方,FormClosingEventArgs e)
{
var isAProcessRunning=processs.Where(p=>p.HasExited==false);
if(isProcessRunning.Any())
{
//某些进程已在运行,请询问用户
if(MessageBox.Show(“您确定要退出吗?”,“确认退出”,MessageBox按钮.YesNo)==
DialogResult.No)
{
e、 取消=真;
}
}
}
更多信息
说明 它一直在循环,因为你在这个方法中调用了
Application.Exit()
。我不知道你想做什么,但我想你想问用户是否真的想关闭这个应用。 如果您的设置
e.Cancel=true
意味着您取消了活动,因此在您的情况下,您可以取消以关闭应用程序

因此,如果您询问“确定要退出”并且用户选择“否”,您应该设置
e.Cancel=true
,如果不设置,则什么也不做,因为
e.Cancel
的默认值是
false

样品
//创建进程列表
私有列表进程=新列表();
//如果你开始一个过程
进程myProcess=/;
进程。添加(myProcess);
//收盘时
私有作废Form1\u FormClosing(对象发送方,FormClosingEventArgs e)
{
var isAProcessRunning=processs.Where(p=>p.HasExited==false);
if(isProcessRunning.Any())
{
//某些进程已在运行,请询问用户
if(MessageBox.Show(“您确定要退出吗?”,“确认退出”,MessageBox按钮.YesNo)==
DialogResult.No)
{
e、 取消=真;
}
}
}
更多信息


这段代码试图完成什么?什么是processID?这段代码应该做什么?你想实现什么?这段代码真的错了。为什么你需要循环一个
应用程序。退出
调用?
while(x.Id==\uProcessID)
嗯为什么不
如果(x.Id==\uProcessID)
?同意其他评论-此代码首先不应该存在。我怀疑
x.Id==\u processID
此代码试图实现什么?什么是_processID?此代码应该做什么?您试图实现什么?此代码完全错了。为什么需要循环
应用程序。退出de>call?
while(x.Id==\u processID)
um为什么不
if(x.Id==\u processID)
?同意其他评论-此代码首先不应该存在。我怀疑
x.Id==\u processID
我想做的是:程序中有进程,如果用户关闭表单,我想警告用户进程是否仍在运行,但消息框不断弹出:(.抱歉,我需要更多信息。您是如何启动流程的?我使用process process1=new process();)创建了一个新流程。但我想在关闭时发出警告消息。@Darkshadw我希望我理解您的场景IO;)请查看我的更新答案。我确信我们可以解决您的问题。退出该问题不会终止您已经创建的进程,是否要终止这些进程?我试图做的是:程序中正在创建进程,如果用户关闭表单,我想警告用户进程是否仍在运行,但消息框kEEP弹出:(.抱歉,我需要更多信息。您是如何启动流程的?我使用process process1=new process();)创建了一个新流程。但我想在关闭时发出警告消息。@Darkshadw我希望我理解您的场景IO;)查看我的更新答案。我确信我们可以解决您的问题。退出问题不会终止您已经创建的进程,是否终止这些进程?
// create a list of process
private List<Process> processes = new List<Process>();

// if you start a process
Process myProcess = //;
processes.Add(myProcess);

// on closing
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    var isAProcessRunning = processes.Where(p => p.HasExited == false);

    if (isAProcessRunning.Any()) 
    {
      // some process is already running, ask the user 

        if (MessageBox.Show("Are you sure you want to quit?", "Confirm Quit", MessageBoxButtons.YesNo) ==
        DialogResult.No)
        {
            e.Cancel = true;
        }
     }
  }