[英]C# formclosing event and 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())
{
while (x.Id == _processID)
{
Application.Exit();
e.Cancel = true;
return;
}
}
}
因為您在此方法內調用Application.Exit()
所以它一直在循環。 我不知道您要做什么,但我想您想問一下用戶是否真的要關閉該應用程序。 如果您將e.Cancel = true
設置e.Cancel = true
則意味着您取消了該事件,因此在您的情況下,您將取消以關閉該應用程序。
因此,如果您詢問“確定要退出”並且用戶選擇“否”,則應將e.Cancel = true
設置e.Cancel = true
,如果不執行任何操作則因為e.Cancel
的默認值為false
。
// 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;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.