Вверх ↑
Этот топик читают: Гость
Ответов: 117
Рейтинг: 1
#1: 2011-03-10 21:50:46 ЛС | профиль | цитата
Здравствуйте. Вроде проблемка не из сложных, но пока я не осведомлён. В общем мне нужно, чтобы программа искала файлы. Но один компонент FileSearch не может искать сразу файлы по нескольким маскам, поэтому нужно применять несколько компонентов. Но когда происходит поиск программа как бы виснет и я вот боюсь как бы компоненты при поиске друг другу "не мешали" и вдобавок мне нужно, чтобы рабочая область программы была активна, т.е не висла в то время, когда идёт поиск. Как искать и тп это всё я вкурсе, только вот как создать некую "параллельность"? Спасибо.
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#2: 2011-03-10 21:54:02 ЛС | профиль | цитата
Thread
карма: 26
0
Ответов: 117
Рейтинг: 1
#3: 2011-03-10 21:58:22 ЛС | профиль | цитата
Dilma, до написания на форум читал это. Но я так понял он создаёт итерации, т.е как и таймер - простые события. Может я не так понимаю? Разъясни пожалуйста.
карма: 0

0
Ответов: 4641
Рейтинг: 334
#4: 2011-03-10 22:02:26 ЛС | профиль | цитата
Mr.Tiesto, так в описании и замечании все написано. к чему лишнии разъяснения.
Что именно из описанного не понятно?
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 117
Рейтинг: 1
#5: 2011-03-10 22:05:33 ЛС | профиль | цитата
Меня сбивает с толку фраза "Delay - Задержка между итерациями в миллисекундах". Итерация это же простой вызов события. Вот, например, в компоненте Timer: "Interval - Интервал (в миллисекундах) между итерациями таймера". Таймер ведь вызывает событие. Вот я так и понимаю что и Thread также просто вызывает событие...(

карма: 0

0
Разработчик
Ответов: 26324
Рейтинг: 2147
#6: 2011-03-10 22:14:14 ЛС | профиль | цитата
Mr.Tiesto, итерации происходят в собственном потоке и друг другу не мешают, как если бы это были совершенно разные приложения. А таймер, кстати, привязан к событиям главного потока приложения, его итерации зависят друг от друга, и от работы приложения в целом
------------ Дoбавленo в 22.13:
К тому же, зачем итерации для файлового поиска, достаточно после выполнения поиска остановить поток, установив FastStop=True, кстати, надо учитывать, что следующая итерация не наступит до тех пор, пока не закончиться вся очередь событий предыдущей итерации
карма: 22

0
Ответов: 1376
Рейтинг: 198
#7: 2011-03-10 22:15:59 ЛС | профиль | цитата
Mr.Tiesto писал(а):
Но один компонент FileSearch не может искать сразу файлы по нескольким маскам, поэтому нужно применять несколько компонентов
Пробуем так поискать
code_22897.txt
карма: 1

0
файлы: 1code_22897.txt [782B] [148]
Разработчик
Ответов: 26324
Рейтинг: 2147
#8: 2011-03-10 22:18:08 ЛС | профиль | цитата
foksov писал(а):
Пробуем так поискать

Это очень длительная операция -- искать по всем файлам, отсеивая ненужные
карма: 22

0
Ответов: 117
Рейтинг: 1
#9: 2011-03-10 22:20:11 ЛС | профиль | цитата
Аааааа... Тобиш я ставлю thread и faststop = true и после первого события которое "зайдёт" в треад он передаст его на поиск файла, только в отдельном потоке, и сразу остановится? Теперь понятно. Спасибо вам.
карма: 0

0
Ответов: 3851
Рейтинг: 159
#10: 2011-03-10 22:20:20 ЛС | профиль | цитата

Mr.Tiesto писал(а):
Но один компонент FileSearch не может искать сразу файлы по нескольким маскам, поэтому нужно применять несколько компонентов
я обычно делаю последовательную обработку по нескольким маскам, а не несколько компонентов FileSearch..
карма: 0
начавший
0
Разработчик
Ответов: 26324
Рейтинг: 2147
#11: 2011-03-10 22:25:37 ЛС | профиль | цитата
Mr.Tiesto писал(а):
и сразу остановится?

Только после окончания выполнения самой итерации. Физически поток не уничтожится, он перестанет выполняться, но будет висеть в памяти. Если надо уничтожить поток после выполнения, то правильно уничтожать его нужно от синхронного события.
Вот так


Add(Thread,9282335,308,343)
{
FastStop=0
link(onSyncExec,9282335:doStop,[(354,356)(354,387)(296,387)(296,356)])
}

карма: 22

0
Ответов: 117
Рейтинг: 1
#12: 2011-03-10 22:40:41 ЛС | профиль | цитата
Только после окончания выполнения самой итерации. Физически поток не уничтожится, он перестанет выполняться, но будет висеть в памяти. Если надо уничтожить поток после выполнения, то правильно уничтожать его нужно от синхронного события.
программа рассчитана на небольшой период времени работы, поэтому, думаю, уничтожение необязательно.
карма: 0

0
Разработчик
Ответов: 26324
Рейтинг: 2147
#13: 2011-03-10 23:10:59 ЛС | профиль | цитата
Mr.Tiesto писал(а):
программа рассчитана на небольшой период времени работы, поэтому, думаю, уничтожение необязательно

Это я на будущее сказал, вдруг, придется столкнуться с такой надобностью
карма: 22

0
13
Сообщение
...
Прикрепленные файлы
(файлы не залиты)