2017-02-10 10 views
-1

У меня возник вопрос, я создал приложение на визуальной студии с использованием C# и Window Forms, но каждый раз, когда он запускается, если приложение закрывается (либо вручную человеком, либо когда оно достигает конца) он продолжает работать в процессе работы компьютера, поэтому, если я открою и закрою приложение 3 раза, будет активировано 3 процесса с тем же именем. Как я могу предотвратить это? Пока единственный способ закрыть его - это запустить Window Task Manager и закрыть его вручную, что является болью ...Процесс, выполняющийся на компьютере после выхода приложения

Любые идеи?

+0

Необходимо, чтобы ваш код подскажет, почему. – itsme86

ответ

1

, если вы хотите, чтобы убить все процессы и выйти из приложения, то сначала вам нужно убить темы в фоновом режиме

Application.ExitThread(); 

и затем выйти из приложения

Environment.Exit(); 
+0

Спасибо, это сработало отлично. :) – dreamheart

+0

мое удовольствие знать, что .. отметьте его как ответ .. – Saif

-1

Ну, основываясь на этой задаче может проверить, работает ли ваше приложение при запуске вашего приложения. Таким образом, вы только начать процесс, если он не работает:

я собираюсь проверить, например, блокнотом:

Process[] pname = Process.GetProcessesByName("notepad"); 
if (pname.Length == 0) 
{ 
    //The application is not running. Start your process here 
} 
else 
{ 
    //Your application is running. Do nothing 
} 
+0

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

0

Вы можете использовать ответ Саифа, который заставляет фоновые потоки, чтобы прервать, но я бы Рекомендуйте вам лучше управлять своими потоками. Если у вас есть потоки, которые работают в течение длительного периода времени, у вас должен быть флаг (логическое значение, доступное из любого места вашего кода), которое сообщает потокам, что они должны прекратить работу. Это является более безопасным методом, чем

Application.ExitThread(); 

, потому что это позволяет промывать и закрывать потоки, отключите его подключение к сокету или привести в порядок все, что вы делаете в ваших потоках.