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、 取消=真;
}
}
}
更多信息
应用程序。退出
调用?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;
}
}
}