2015-09-07 1 views
-1

У меня есть много winforms в проекте. Когда я нажимаю кнопку «Крест», чтобы закрыть одну конкретную форму, возможно, она работает в фоновом режиме. Итак, как я могу остановить это из работы в фоновом режиме, когда я нажимаю кнопку перекрестки. У меня есть код для выхода из приложения;Как я могу остановить запуск приложения в backgournd и выйти без исключения?

Application.Exit(); 

Но это также показывает исключение, когда из frmMainMenu я нажимаю на опцию logoutMenuStrip. Для LogoutMenuStrip у меня есть следующий код для принудительного выхода из приложения. Но все же это показывает некоторое исключение. Мой вопрос: как я могу предотвратить все исключения, когда я нажимаю на этот logoutMenuStrip.

я предположил, что, возможно, щелкать другие формы закрытия они получают работает в фоновом режиме

Код для LogoutMenuStrip:

private void logoutToolStripMenuItem1_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      MessageBox.Show("Are you sure to QUIT ?", "Exit", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); 
      Application.Exit(); 
     } 
     catch 
     { 
      Application.Exit(); 
     } 
    } 

Заранее спасибо :)

+1

Помещенный исключение –

+0

может быть, вы должны показать ту часть, где вы запускаете что-то в фоновом режиме вместо ... ваши формы никогда не должны бросать исключения, когда они закрыты! – Carsten

+0

Пожалуйста, определите, как используются формы, работающие в фоновом режиме .. что именно означает. Используете ли вы и поток рабочего потока, потоки, параллельные задачи? –

ответ

0

Если у вас есть несколько экземпляров вашего запущенного и одного или нескольких из тех, кто находится в фоновом режиме, вы можете перечислить процессы, а затем убить их.

var processes=Process.GetProcessByName("AppName"); 
foreach(var process in processes) 
    process.Kill(); 
+0

Спасибо. Это работает лучше. – shuvro

0

использование окружающей среды .Exit (0); она закрывает все и закрывает приложение

private void logoutToolStripMenuItem1_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      MessageBox.Show("Are you sure to QUIT ?", "Exit", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); 
      Environment.Exit(0); 
     } 
     catch 
     { 
      Environment.Exit(0); 
     } 
    } 
+0

Спасибо @Thorarins. Это решение также работает. Но я предпочитал убийство процесса; – shuvro

+1

Это более чистое решение; он просто просит приложение закрыть, а не форсировать его. – Nyerguds

Смежные вопросы