2013-08-28 2 views
3

Я немного искал google, но не могу заставить его работать.Включить нажатие кнопки при запуске другого процесса

У меня есть какой-то процесс, когда я нажимаю кнопку.

Я хочу добавить кнопку «Убить всех», чтобы терпеть каждое при нажатии, но когда я начинаю процесс, я не могу нажать любую другую кнопку до ее финиша.

private void button_checkZero_phones_Click(object sender, EventArgs e) 
    { 
     Thread thread = new Thread(new ThreadStart(WorkThreadFunction)); 
     thread.Start(); 
    } 

private void button_kill_all_Click(object sender, EventArgs e) 
    { 
     System.Environment.Exit(1); 
    } 
+3

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

+0

Нас диспетчер помещает вещи в одну и ту же тему. –

+0

Пожалуйста, предоставьте код, в котором вы начнете процесс – MikkaRin

ответ

2

Вы должны запустить свой метод «Убить всех» методом асинхронного доступа. Основной поток всегда блокируется при длительном процессе.

Более подробную информацию о вашей проблеме: WinForm Application UI Hangs during Long-Running Operation

Просто используйте один из следующих способов - пробежать убить всех в:

  1. BackgroundWorker
  2. Другой поток
  3. Другая задача
  4. Использовать async/wait
  5. Реактивный экстензи ons

Существует несколько способов уведомить вас о том, что все процессы прекращены! Это зависит от того, какой метод вы используете.

+1

ходун работает отлично! ty – susparsy

+0

У меня теперь есть другая проблема, рабочий работает как запрос, и когда я нажимаю кнопку, когда она запускается один раз, но когда я нажимаю ее снова, она работает дважды – susparsy

+1

отключите кнопку, когда она щелкнула! –

0

Является ли это приложение для Windows? Если вы чувствуете старую школу и наслаждаетесь свертыванием других разработчиков, придерживайтесь Application.DoEvents() в вашей петле смерти.

Вы знаете, что хотите.

Если вы хотите сделать это, не получая презрение от всех своих сверстников, см. this question and answer.