WPF: неблокирующий интерфейс - PullRequest
2 голосов
/ 20 октября 2010

У меня есть два флажка и кнопка.Под обработчиком нажатия кнопки

private void button1_Click(..)
{
 if(checkbox1.true) { //start a process }
 if(checkbox2.true) { //start process 2 once process 1 is done}

}

Оба процесса 1 и 2 запускаются асинхронно.Как установить зависимость между процессом 2 и процессом 1?Я не хочу опрашивать, если процесс 1 выполняется до запуска процесса 2. Это заблокирует пользовательский интерфейс.Любое другое решение?

Спасибо

Ответы [ 2 ]

1 голос
/ 20 октября 2010

Реализация фонового работника для выполнения процесса1

http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

В вашем работающем завершил проверку событий, чтобы проверить, установлен ли флажок 2

//copy and pasted from msdn

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
                    if (e.Cancelled == true)
                    {
                        //dosomething
                    }
                    else if (e.Error != null)
                    {
                        //dosomething
                    }
                    else
                    {
                        if(checkbox2.Checked)
                        {
                           //fire off process 2
                         }
                    }
                }
1 голос
/ 20 октября 2010

Вы можете подключиться к событию Exited класса Process.

Что-то вроде:

Process p = ...
if(checkbox2.Checked)
    p.Exited = ... // Event handler that starts process 2

p.Start()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...