Переполнение череди сообщений
От: Mistery Россия  
Дата: 06.02.02 13:24
Оценка:
Проблема у меня такая:

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

Вопрос такой: что надо сделать, чтобы сообшения не терялись.

Функция SetMessageQueue(int) мне в этом не помогла.
Проблема существует только под Win9x.

Заранеее благодарен за помощь.


Mistery.
Mistery
Re: Переполнение череди сообщений
От: ua1zcl Россия www.alexklm.ru
Дата: 06.02.02 18:40
Оценка:
Здравствуйте Mistery, Вы писали:

M>Проблема у меня такая...


Насколько я прав, я не уверен. Но я бы разгрузил основной поток задачи чтобы качать все сообщения, а для рутинной работы запускал дополнительный поток или потоки.
Александр
Re: Переполнение череди сообщений
От: IT Россия linq2db.com
Дата: 06.02.02 19:50
Оценка:
Здравствуйте Mistery, Вы писали:

M>Окну посылается много пользовательских сообщений, так что оно не успевает их все обрабатывать. При этом часть сообшений видимо не помещается в очередь и просто отбрасывается — окно их не получает.


Может посылающему потоку стоит использовать SendMessage instead of PostMessage?
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Переполнение череди сообщений
От: ua1zcl Россия www.alexklm.ru
Дата: 06.02.02 19:57
Оценка:
Здравствуйте IT, Вы писали:

IT>Здравствуйте Mistery, Вы писали:


M>>Окну посылается много пользовательских сообщений, так что оно не успевает их все обрабатывать. При этом часть сообшений видимо не помещается в очередь и просто отбрасывается — окно их не получает.


IT>Может посылающему потоку стоит использовать SendMessage instead of PostMessage?

То и другое можно, но при SendMessage надо опасаться задержки потока в общем коде (критический участок кода, куда могут зайти оба потока).
Александр
Re[3]: Переполнение череди сообщений
От: IT Россия linq2db.com
Дата: 07.02.02 00:30
Оценка:
Здравствуйте ua1zcl, Вы писали:

IT>>Может посылающему потоку стоит использовать SendMessage instead of PostMessage?


U>То и другое можно, но при SendMessage надо опасаться задержки потока в общем коде (критический участок кода, куда могут зайти оба потока).


Ну да, а при PostMessage — сабжа
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Переполнение череди сообщений
От: Mistery Россия  
Дата: 11.02.02 06:52
Оценка:
Здравствуйте все,

Использовать SendMessage нельзя, так как тормозится работа основного потока (а он осуществляет низкоуровневое чтение флоппи-диска — если его остановить на некоторое время, головка пропускает нужный сектор и ждет следующего оборота диска — замедление почти в 2 раза)

Сначала чтение идёт хорошо, однако потом поток, обрабатывающий сообщения просто перестаёт получать процессорное время(всё утекает не дисковод) и, видимо, не успевает увеличивать очередь сообщений

Выхода из этой ситуации я ещё не нашёл
Всё также благодарен буду за помощь
Mistery
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.