![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 10.06.2010
Сообщений: 6
|
![]()
Здравствуйте, уважаемые!
Нужна подсказка... Есть поток главной формы и поток для чтения из порта, если за определенное время нужных данных в порт не поступало, то второстепенный поток отправляет сообщение главному и тот уже выдает сообщение пользователю с запросом - "перезапросить ли данные?" Если ответ отрицательный, то главный поток должен сообщить об этом второстепенному, чтобы тот больше не ждал информацию, а просто считывал все что приходит... В чем загвоздка: Второстепенный поток без проблем отправляет сообщение главному потоку, но от главного потока второстепенному сообщение так и не доходит :'( Заранее очень признательна за помощь! Код:
Последний раз редактировалось mig_ira; 09.08.2010 в 11:01. |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Насколько я знаю, чтоб кидаться сообщениями нужно в потоке описать их обработчик, но и этого пожалуй будет маловато - сообщения могут приходить только окну. Я бы на твоем месте вместо посылок сообщений описал и вызывал методы потока, которые бы выполняли аналогичные твоим сообщения действия
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 10.06.2010
Сообщений: 6
|
![]()
В принципе про окна я что-то такое уже начала сама подозревать, но, честно говоря, надеялась, что без окна обойтись можно, просто я не нашла как..)
Насчет методов - тоже пробовала... Выплывает страшный глюк в момент отображения пользователю запроса - окошко запроса непредсказуемо растягивается и сужается самыми немыслимыми способами х_х, Поэтому чтобы этого не происходило, я и решила, что главный поток будет выдавать этот запрос правильно, это, как раз, сработало, но вот тут меня и настиг вопрос, с которым я обратилась) Может быть вам встречался этот мой "страшный глюк" с окошком? Про запрос ответа у пользователя из второстепенных потоков, как в моем случае, я ничего не нашла |
![]() |
![]() |
![]() |
#4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Никогда не нарывался в потоках на такой глюк.
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 10.06.2010
Сообщений: 6
|
![]()
Конечно =) В приложенном файле только три варианта...
|
![]() |
![]() |
![]() |
#6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Ага. Попробуй триммировать сообщения функцией Trim(). Ато бывает что сообщение дополняется пробелами до посинения.
I'm learning to live...
|
![]() |
![]() |
![]() |
#7 |
Регистрация: 10.06.2010
Сообщений: 6
|
![]()
Спасибо за совет, в моем случае, правда, он это не очень помогло - срезать пыталась по всякому, и напрямую, и в переменной, пробовала текст константой задать в надежде, что не посмеет пробелов дописать... Во всяком случае, стоило попробовать)
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 29.12.2007
Сообщений: 137
|
![]()
Отправлять сообщение непосредственно в очередь потока можно с помощью PostThreadMessage, нельзя в SendMessage указывать хэндл потока, это совсем не то же самое, что хэндл окна. Но даже посылая с помощью PostThreadMessage сообщения, нужно в потоке создать петлю обработки сообщений (см. Get(Peek)Message, TranslateMessage, DispatchMessage), иначе сообщения просто будут скапливаться в очереди, а их извлечением и диспетчеризацией окну никто не будет заниматься
|
![]() |
![]() |
![]() |
#9 |
Регистрация: 10.06.2010
Сообщений: 6
|
![]()
Не знаю в чем прикол... Заменила MessageDlg на MessageBox, этот, может, и не такой симпатичный, но ведет себя вполне предсказуемо,а главное, вполне подходит для моей задачи)
Спасибо за проявленное внимание =) |
![]() |
![]() |
![]() |
#10 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
А чем ты выводишь сообщение? какой функой?
Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с потоками | Нюська | Общие вопросы Delphi | 3 | 27.05.2009 00:52 |
Работа с потоками | Neymexa | Общие вопросы .NET | 16 | 23.04.2009 17:42 |
Как грамотно разделить данные между потоками? | bagulma | Общие вопросы Delphi | 5 | 28.05.2008 22:41 |
C++, работа с потоками | mat90x | Помощь студентам | 20 | 15.05.2008 22:20 |
Проблема с потоками | vitalik007 | Общие вопросы Delphi | 1 | 11.03.2008 22:35 |