2015-09-15 2 views
1

Я запускаю простое приложение .NET Windows Forms. Когда я нажимаю кнопку закрытия, форма Windows закрывается, но процесс не закрывается. Когда я смотрю на Диспетчер задач, я вижу, что процесс для приложения все еще жив, как фоновый процесс. enter image description hereПриложение формы Windows не закрывается должным образом

Может кто-нибудь объяснить, почему это так? Упускаю ли я какую-то функцию, когда она закрывается?

+0

Вы уверены, что основная форма приложения закрыта? Существуют ли несколько форм? – thewisegod

+1

Создает ли ваше приложение какие-либо темы? Если это так, вы устанавливаете для свойства 'IsBackground' значение' true'? – adv12

+0

OnFormClosing event put Application.Exit(); –

ответ

0

Вам нужно позвонить

Application.Exit(); 

в случае закрытия вашей формы.

0

Application.Exit
Сообщает все насосы сообщений, которые они должны завершить, а затем закрывает все окна приложений после того, как сообщения были обработаны. Это код для использования, если вы вызываете Application.Run (приложения WinForms), этот метод останавливает все запущенные петли сообщений во всех потоках и закрывает все окна приложения.

// WinForms app 
System.Windows.Forms.Application.Exit(); 

Включите этот код в открывшееся окно.

+0

Не могли бы вы объяснить downvote? –

+0

Кто-то здесь отрицает каждый ответ. – Bgl86

+1

Я не голосовал, но я бы догадался, что кто-то проголосовал за то, что все ответы говорят вопроснику, чтобы он ударил его проблемой молотком, вместо того, чтобы найти то, что держит его приложение открытым. – JoelC

-3
private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     try 
     { 
      this.RemoveOwnedForm(this); 
      e.Cancel = true; 
      Process[] AllProcess = Process.GetProcesses(); 
      for (int i = 0; i < AllProcess.Length; i++) 
      { 
      if (AllProcess[i].ProcessName.StartsWith("SmsAlertRemainder")) 
       { 
         AllProcess[i].Kill(); 
        } 
      } 
      Application.Exit(e); 
     } 
     catch (Exception ex) 
     { 
      Logger.WriteException(ex); 
     } 
    } 
Смежные вопросы