Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WPF, Silverlight Новый топик    Ответить
 Callback, как послать сигнал основному потоку?  [new]
klointiinn
Member

Откуда:
Сообщений: 1
Есть основной класс MainPage, в нём объект - экземпляр класса Work, выполняющего всю работу, а в Work - метод Do, в цикле выполняющий всё, что нужно. Проблема в том, что Do вызывает функцию, результат которой обрабатывается callback обработчиком там же, в классе Do. Т.е. рабочий цикл прерывается, делается вызов, из Do выходим по return, т.к. надо дождаться результата. А обработчик callback обрабатывает результат и запускает цикл с того же места, где прервалось. И этих вложенностей может быть несколько. Так вот, проблема в том, что результаты работы хранятся в полях объекта класса Work, и надо вывести их на страницу, как только цикл Do завершится полностью. Со страницы-то мы запускаем первый Do, но он завершается, не до конца отработав, когда мы первый раз вызываем эту грёбаную функцию. Потом, после callback, Do дорабатывает, но страница-то об этом не знает. Как подать ей сигнал? В цикле проверять поля Work? Не по TCP же сообщения кидать? Доступа к элементам страницы нет, выдаётся исключение Invalid cross-thread access.
26 янв 15, 21:54    [17173672]     Ответить | Цитировать Сообщить модератору
 Re: Callback, как послать сигнал основному потоку?  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 4036
мои глаза........
честно говоря я нихрена не понял только то, что есть поток и надо делать вызовы из потока на обновление.

самый просто вариант, это использовать BackgroundWorker, там есть методы для прогресса, результата и т.д.

вариант посложнее: таски.

для обновления значений в интерфейсе использовать INotifyPropertyChanged

Но для начала, Вам надо понять, что такое WPF и почему приёмы WinForms в неприменимы.
26 янв 15, 22:34    [17173867]     Ответить | Цитировать Сообщить модератору
 Re: Callback, как послать сигнал основному потоку?  [new]
unknownfromrus
Member

Откуда:
Сообщений: 345
Roman Mejtes,

Это чем же таски сложнее?
30 янв 15, 01:46    [17193047]     Ответить | Цитировать Сообщить модератору
Все форумы / WPF, Silverlight Ответить