簡體   English   中英

C#封閉事件和循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM