|
Callback, как послать сигнал основному потоку?
|
|||
---|---|---|---|
#18+
Есть основной класс MainPage, в нём объект - экземпляр класса Work, выполняющего всю работу, а в Work - метод Do, в цикле выполняющий всё, что нужно. Проблема в том, что Do вызывает функцию, результат которой обрабатывается callback обработчиком там же, в классе Do. Т.е. рабочий цикл прерывается, делается вызов, из Do выходим по return , т.к. надо дождаться результата. А обработчик callback обрабатывает результат и запускает цикл с того же места, где прервалось. И этих вложенностей может быть несколько. Так вот, проблема в том, что результаты работы хранятся в полях объекта класса Work, и надо вывести их на страницу, как только цикл Do завершится полностью. Со страницы-то мы запускаем первый Do, но он завершается, не до конца отработав, когда мы первый раз вызываем эту грёбаную функцию. Потом, после callback, Do дорабатывает, но страница-то об этом не знает. Как подать ей сигнал? В цикле проверять поля Work? Не по TCP же сообщения кидать? Доступа к элементам страницы нет, выдаётся исключение Invalid cross-thread access. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2015, 21:54 |
|
Callback, как послать сигнал основному потоку?
|
|||
---|---|---|---|
#18+
мои глаза........ честно говоря я нихрена не понял только то, что есть поток и надо делать вызовы из потока на обновление. самый просто вариант, это использовать BackgroundWorker, там есть методы для прогресса, результата и т.д. вариант посложнее: таски. для обновления значений в интерфейсе использовать INotifyPropertyChanged Но для начала, Вам надо понять, что такое WPF и почему приёмы WinForms в неприменимы. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2015, 22:34 |
|
|
start [/forum/topic.php?fid=21&fpage=18&tid=1440944]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 132ms |
0 / 0 |