Re[6]: Обновление видов документа из потока
От: KGP http://kornilow.newmail.ru
Дата: 31.07.03 11:45
Оценка:
Здравствуйте, Kiper, Вы писали:

K>Разница в том, что из потока нельзя напрямую доставать окна. Вы можете прямо обращаться из потока только к окну, которое его породило. А по другому, через главное род. окно, и желательно без пойнтеров (т.е. использовать HWND) и желательно PostMessage()


А причина кака ?
обращение к HWND зависит от потоков ?
они же глобальны для системы ...
Re[9]: Обновление видов документа из потока
От: algol Россия about:blank
Дата: 01.08.03 06:25
Оценка:
Здравствуйте, Serguei666, Вы писали:

A>>В MSDN есть статьи "First Aid for the Thread-Impaired: Using Multiple Threads with MFC" (MSJ December 1996) и "More First Aid for the Thread Impaired: Cool Ways to Take Advantage of Multithreading" (MSJ July 1997). Оч-чень рекомендую ознакомиться.


S>Спасибо, не буду, потому что не думаю, что я там найду что-то, чего я не знаю.


Правильно, это как раз та самая инструкция, которую нужно читать, когда уже ничего не помогает.

S>Именно. Речь об "any MFC objects". Т.е.в общем случае работать не будет, а в частных случаях — будет без проблем. Важно знать детали реализации, а без них сообщения типа того, что запостил Sasparella — бесполезны и бессмысленны.


S>Ага. Именно это я и говорю — в некоторых случаях все будет распрекрасно работать.


Наблюдал самолично, поэтому и посоветовал почитать. Да, скорее всего будет работать. Только где-то, когда-то, время от времени будет сбоить. И отловить эту проблему будет стоить много нервов и времени. Конечно для экстремальных программеров и искателей приключений это не помеха.
Re[10]: Обновление видов документа из потока
От: Serguei666 Беларусь  
Дата: 01.08.03 12:55
Оценка:
Здравствуйте, algol, Вы писали:

A>Правильно, это как раз та самая инструкция, которую нужно читать, когда уже ничего не помогает.

Мне не нужно читать. Я и так это знаю.

S>>Ага. Именно это я и говорю — в некоторых случаях все будет распрекрасно работать.

A>Наблюдал самолично, поэтому и посоветовал почитать. Да, скорее всего будет работать.
Только где-то, когда-то, время от времени будет сбоить.

Сутации "время от времени будет сбоить" не будет, потому что либо будет сразу надежно работать, либо будет сразу 100% не работать. Ведь в чем проблема? Проблема в том, что фунция CWnd::FromHandlePermanent() в другой цепочке будет возврашать NULL, а CWnd::FromHandle() будет возврашать отличный от главной цепочки результат. Если вы не используете эти две функции, или используете их вдумчиво — все будет работать.


A>И отловить эту проблему будет стоить много нервов и времени. Конечно для экстремальных программеров и искателей приключений это не помеха.

А еще это не помеха для опытных программеров, знающих многие тонкости реализации MFC
Хотите сказать 'спасибо'? Тогда поставьте оценку
Re[5]: Обновление видов документа из потока
От: vgrigor  
Дата: 01.08.03 13:17
Оценка:
Пишут что, рекомендуемый способ это обойти —
работать самому с handle окон,
но это весьма неудобно, надо закапываться,

я думаю лучше крутить прикладные сообщения в потоках,
потом прислать сообщения на выполнение операции в основной поток
приложения — где интерфейс отобрается,
и освободить этот поток от блокирующих длительных операций,
-т.е. слегка реорганизовать приложение по многопоточности,
тогда вот такая кривизна MFC не так будет беспокоить.
Винтовку добудешь в бою!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.