Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

AV при обработке MM таймера.


@!!ex ©   (2007-08-30 15:22:00) 

timerID:=timeSetEvent(100,0,@TimerProc,0,TIME_PERIODIC);
sleep(2000);
timeKillEvent(TimerID);


procedure TimerProc(utimerID,uMessage:uint; dwUser,dw1,dw2:Word);
begin
end;


Падает послепервого выполнения TimerProc.
Не понимаю почему.


@!!ex   (2007-08-30 20:35:00) [1]

> Кста, у тебя еще висит?

процесс? :)
Конечно висит, он по другому и не может в принципе, как никак он около 100 мегабайт запакованных данных должен считать и распаковать, а в некоторых случаях еще и распарсить.


Leonid Troyanovsky   (2007-08-30 20:00:00) [2]


> @!!ex ©   (30.08.07 19:58) [11]

> Да ко всему можно

Хозяин - барин.

Кста, у тебя еще висит?

--
Regards, LVT.


@!!ex   (2007-08-30 19:58:00) [3]

> [9] Leonid Troyanovsky ©   (30.08.07 19:42)

Да ко всему можно, только надо помнить о совместном доступе, для этого и реализовали, например, симафоры.


Инс   (2007-08-30 19:53:00) [4]


> [9] Leonid Troyanovsky ©   (30.08.07 19:42)

Вообще да, сейчас глянул, ужаснулся.


Leonid Troyanovsky   (2007-08-30 19:42:00) [5]


> Инс ©   (30.08.07 18:53) [2]

> Только к VCL из TimerProc не нужно обращаться

Там, во-ще, много к чему нельзя обращаться.
В ограничениях явно перечислено к чему можно.

--
Regards, LVT.


@!!ex   (2007-08-30 19:36:00) [6]

> Я что-то не понимаю? Обычно доп потоки нужны чтобы осн.
> не висел, а тут наоборот…

ЛОЛ.
Разные бывают причины.


Инс   (2007-08-30 19:33:00) [7]


> Обычно доп потоки нужны...


Где они только не нужны... То, что вы привели - лишь частный случай.


Kolan   (2007-08-30 19:29:00) [8]

> когда основной поток висит.

Я что-то не понимаю? Обычно доп потоки нужны чтобы осн. невисел, а тут наоборот…


@!!ex   (2007-08-30 19:23:00) [9]

> [4] Инс ©   (30.08.07 19:07)

основная причина, по которой решил юзать таймер - отдельный поток. :)
Поскольку нужно выполнить некоторые действия, когда основной поток висит.
ПРавда уже обломилось, пришлось без таймера делать. :((


Инс   (2007-08-30 19:07:00) [10]


> У меня нет VCL.


Тогда ладно, просто имейте в виду, вдруг вы не знаете (многие на эти грабли наступают) - тело функции таймера выполняется в отдельном потоке. Учтите это.


@!!ex   (2007-08-30 19:04:00) [11]

> [2] Инс ©   (30.08.07 18:53)

У меня нет VCL.


Инс   (2007-08-30 18:53:00) [12]

Только к VCL из TimerProc не нужно обращаться


@!!ex   (2007-08-30 15:23:00) [13]

Все понял.
Тупо забыл stdcall.


Наверх

Титульная страница Поиск, карта сайта Написать письмо