Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2014, 18:07   #1
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию CreateEvent. Освобождение ресурсов

Активно использую функцию CreateEvent для управления потоками.
А именно: для выполнения какой-либо операции, которая может провалиться,
создаю поток, чтобы через указанное время если
операция не пройдет успешно - убить ее вместе с потоком,
чтобы прогу не вешала.

операций тысячи и на каждую создается событие.
Но я что-то нигде не нашел инфы как созданные события потом освобождать.
Поэтому вопрос такой: надо ли их освобождать, или они освобождаются автоматически при наступлении события?
И если надо, то как?



Код:
// создаем событие
Event:=CreateEvent(nil, True, False, nil);

// создать и запустить поток
TR:=Thread.Create;
TR.Resume;

// ждем событие (активируется в конце работы потока)
WaitForSingleObject(Event, TimeOut);

// конец работы потока
PulseEvent(Event);


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

заранее спасибо =)

эх, блин, как знал, что что-то не так...
Дескриптор события после окончания работы нужно закрыть
нашел функцию CloseHandle, пишут что она закрывает в том числе и события.

Ладно, еще вопрос: какова область видимости созданных событий?
Только в пределах одного приложения, или же это глобально в винде?

Последний раз редактировалось xrob; 15.04.2014 в 18:31.
xrob вне форума Ответить с цитированием
Старый 15.04.2014, 18:35   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

анонимные события видны только приложению самому(хотя передать хэндл потомку вроде можно).
а вот именованные по всей системе.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что означают CreateEvent и WaitForSingleObject? _PROGRAMM_ Помощь студентам 4 05.04.2012 13:29
Освобождение ресурсов TMediaPlayer regman Мультимедиа в Delphi 4 19.07.2009 20:36
Освобождение памяти VadEr Общие вопросы Delphi 2 17.04.2009 22:23
Освобождение памяти AlexandrSid Общие вопросы Delphi 3 02.02.2009 13:45
Освобождение Памяти в Си volotsky Помощь студентам 2 16.12.2008 22:36