![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Aline |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Привет всем!
Делаю проект, в котором необходимо в отдельном потоке отловить событие(прерывание) и послать сообщение. В отдельности с каждой проблемой вроде бы разобралась: как создать поток, как ожидать событие, как послать сообщение. А вот всё вместе работать не хочет... Вот частичный код:
далее...
по событию, обрабатываем:
но проблема в том, что когда прерывания идут подряд, буквально разница в считанные миллисекунды, они теряются... Что здесь можно сделать? |
||||||
|
|||||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Aline, первый фрагмент кода, видимо, находится в рутине StartRecRead()? То есть, приходит первое сообщение WM_USER - вы по нему создаёте поток, который ждёт, когда возникнет другое событие "IRK_Event", и как только оно возникает, отправляет очередное событие WM_USER, которое создаёт новый поток и т.д. Так? Ну, подозрительного вроде ничего нет, было бы по-больше коду - можно было бы потестить...
-------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| Aline |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
marcusmae, нет, первый фрагмент - на кнопке. Т.е. жмешь на кнопку, запускаешь поток, как только произошло событие в StartRecRead происходит считывание данных с платы. Проблема в том, что началось считывание, а в это время могло произойти ещё одно событие и почему то оно пропадает....
Была мысль, что нужно создать очередь сообщений, но как то у нас не получилось сочередью... |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Ну тогда по-моему совершенно понятно, почему оно пропадает : кнопка включает слушателя WaitForSingleObject в отдельном потоке. Как только событие произошло, ожидание событий закончилось - всё, что пришло после, никому не нужно. Правильно? В принципе, роль потока, как я понимаю, незначительна. Раз Вы коду полноценного не даёте, то можно временно переткнуть цикл ожидания в основной поток и походить там отладчиком, чтобы понять что происходит. Это сообщение отредактировал(а) marcusmae - 26.2.2008, 10:02 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |