|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.08.2010, 10:41 | #1 |
Регистрация: 10.06.2010
Сообщений: 6
|
Потоки. Сообщения между потоками
Здравствуйте, уважаемые!
Нужна подсказка... Есть поток главной формы и поток для чтения из порта, если за определенное время нужных данных в порт не поступало, то второстепенный поток отправляет сообщение главному и тот уже выдает сообщение пользователю с запросом - "перезапросить ли данные?" Если ответ отрицательный, то главный поток должен сообщить об этом второстепенному, чтобы тот больше не ждал информацию, а просто считывал все что приходит... В чем загвоздка: Второстепенный поток без проблем отправляет сообщение главному потоку, но от главного потока второстепенному сообщение так и не доходит :'( Заранее очень признательна за помощь! Код:
Последний раз редактировалось mig_ira; 09.08.2010 в 11:01. |
09.08.2010, 11:09 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Насколько я знаю, чтоб кидаться сообщениями нужно в потоке описать их обработчик, но и этого пожалуй будет маловато - сообщения могут приходить только окну. Я бы на твоем месте вместо посылок сообщений описал и вызывал методы потока, которые бы выполняли аналогичные твоим сообщения действия
I'm learning to live...
|
09.08.2010, 11:25 | #3 |
Регистрация: 10.06.2010
Сообщений: 6
|
В принципе про окна я что-то такое уже начала сама подозревать, но, честно говоря, надеялась, что без окна обойтись можно, просто я не нашла как..)
Насчет методов - тоже пробовала... Выплывает страшный глюк в момент отображения пользователю запроса - окошко запроса непредсказуемо растягивается и сужается самыми немыслимыми способами х_х, Поэтому чтобы этого не происходило, я и решила, что главный поток будет выдавать этот запрос правильно, это, как раз, сработало, но вот тут меня и настиг вопрос, с которым я обратилась) Может быть вам встречался этот мой "страшный глюк" с окошком? Про запрос ответа у пользователя из второстепенных потоков, как в моем случае, я ничего не нашла |
09.08.2010, 12:07 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Никогда не нарывался в потоках на такой глюк.
I'm learning to live...
|
|
09.08.2010, 12:23 | #5 |
Регистрация: 10.06.2010
Сообщений: 6
|
Конечно =) В приложенном файле только три варианта...
|
09.08.2010, 12:39 | #6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Ага. Попробуй триммировать сообщения функцией Trim(). Ато бывает что сообщение дополняется пробелами до посинения.
I'm learning to live...
|
09.08.2010, 12:57 | #7 |
Регистрация: 10.06.2010
Сообщений: 6
|
Спасибо за совет, в моем случае, правда, он это не очень помогло - срезать пыталась по всякому, и напрямую, и в переменной, пробовала текст константой задать в надежде, что не посмеет пробелов дописать... Во всяком случае, стоило попробовать)
|
09.08.2010, 13:26 | #8 |
Форумчанин
Регистрация: 29.12.2007
Сообщений: 137
|
Отправлять сообщение непосредственно в очередь потока можно с помощью PostThreadMessage, нельзя в SendMessage указывать хэндл потока, это совсем не то же самое, что хэндл окна. Но даже посылая с помощью PostThreadMessage сообщения, нужно в потоке создать петлю обработки сообщений (см. Get(Peek)Message, TranslateMessage, DispatchMessage), иначе сообщения просто будут скапливаться в очереди, а их извлечением и диспетчеризацией окну никто не будет заниматься
|
09.08.2010, 13:26 | #9 |
Регистрация: 10.06.2010
Сообщений: 6
|
Не знаю в чем прикол... Заменила MessageDlg на MessageBox, этот, может, и не такой симпатичный, но ведет себя вполне предсказуемо,а главное, вполне подходит для моей задачи)
Спасибо за проявленное внимание =) |
09.08.2010, 13:27 | #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 |