Проблема с потоками в WPF - PullRequest
       3

Проблема с потоками в WPF

2 голосов
/ 09 февраля 2011

Я пишу приложение в WPF. У меня есть один основной поток, а другой - где я что-то вычисляю. В основном потоке мне нужно сделать одну операцию после завершения дополнительного потока. Я не могу использовать Join для дополнительного потока, потому что я не хочу блокировать основной поток. Как мне дождаться окончания второго потока и в то же время не блокировать основной поток?

Ответы [ 3 ]

3 голосов
/ 09 февраля 2011

Самый лучший способ - использовать фонового работника и обрабатывать событие RunWorkerCompleted .

Я также приглашаю вас взглянуть на часть 3 из * 1007 Джозефа Албахари* Threading в C # pdf

2 голосов
/ 09 февраля 2011

Еще один простой способ - использовать библиотеку параллельных задач и объединять несколько задач с продолжениями .

Хотя это не освобождает вас от совета @ Конрада: прочитайте книгу потоков.Это увлекательно и стоит усилий.

0 голосов
/ 09 февраля 2011

Если вы создаете свои собственные потоки, попросите рабочий поток вызвать метод обратного вызова, когда это будет сделано:

public delegate void DoneDelegate (object calculationResults);
public class MyWorker
{
    public DoneDelegate Done { get; set; }
    public void Go()
    {
        object results = null;
        // do some work
        Done(results);
    }
}

public class Main
{
    public void StartWorker()
    {
        MyWorker worker = new MyWorker();
        worker.Done = new DoneDelegate(DoneCallback);
        System.Threading.Thread thread = new System.Threading.Thread(worker.Go);
        thread.IsBackground = true;
        thread.Start();
    }
    public void DoneCallback (object results)
    {
        // use the results
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...