![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 12.11.2008
Сообщений: 11
|
![]()
Чего-то я засиделся и совсем ничего не понимаю. Нужна свежая мысль.
Исходные данные: монитор для слежения за папкой. В случае изменений каких-нибудь, писать в БД. Проблема первая: Просматриваю папку. Происходят изменения. Но в базу заносится произвольное количество записей, а не одна! Вот так просматриваю Код:
Код:
так я его запускаю Код:
Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
не Терминаль поток а Suspend ему делай
я сам с этим мучался уже Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 03.01.2009
Сообщений: 116
|
![]()
Делать Suspend всяко мало, а связка Suspend - Free не всегда корректно отрабатывает при занятии потоком ресурсов (особенно, если это связано с устройствами). Поэтому хочется посоветовать проверить установку в конструкторе потока в True свойства FreeOnTerminate, а извне проверять не assigned, а Tag=0 (в некоторых случаях более корректна логика создания нового потока, когда старый логически уже отработал, но физически мог еще освободить не все ресурсы и не уничтожиться).
|
![]() |
![]() |
![]() |
#4 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]()
Ошибка, в первом куске кода. Делать только так:
Код:
Код:
Чтобы завершить поток в главном потоке, синхронно делаем так: Код:
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 03.01.2009
Сообщений: 116
|
![]()
BOBAH13, так совет совсем в ином состоял (не все правда ясно прописал). Он был в том, чтобы Form1.Tag := 0; делать в деструкторе потока одним из первых действий, а извне просто проверять Form1.Tag на не/равенство нулю, а не конструкцию типа Assigned. Дело даже не в использовании Assigned, а в порядке зануления (установки в Nil) переменной и уничтожения потока для некоторых ситуаций.
|
![]() |
![]() |
![]() |
#6 | |
Пользователь
Регистрация: 12.11.2008
Сообщений: 11
|
![]()
в конструкторе FreeOnTerminate := True; проставляю (((
Цитата:
Почему же все таки в БД заносится несколько событий??? очень не хочется предпроверки ставить при добавлении в БД?? Последний раз редактировалось Deathwatcher; 20.04.2009 в 13:05. |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Есть проблема с потоками | DeeNamid | Общие вопросы Delphi | 2 | 01.11.2008 14:05 |
Проблема с потоками | DeeNamid | Общие вопросы Delphi | 2 | 04.08.2008 17:36 |
работа с потоками | Alex_Pro | Общие вопросы .NET | 1 | 01.07.2008 07:25 |
C++, работа с потоками | mat90x | Помощь студентам | 20 | 15.05.2008 22:20 |
Проблема с потоками | vitalik007 | Общие вопросы Delphi | 1 | 11.03.2008 22:35 |