![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| ZBugz |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Дык вот именно так. Сам в шоке
Ага И я вот тут в ступоре, как это отловить... Ща одна мысля появилась, потестю пока ее.
Всмысле ? |
||||||||
|
|||||||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 6 Всего: 64 |
Странно...
А что у вас в функции "progress"? Это:
стоит в самом конце функции. Какой толк от этого? Циклов у вас не наблюдается. Хотя может вы не весь код привели... -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| ZBugz |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Там вывод информации, вот он там что то пытаеться вывести того, чего нету уже...
Это не весь код, это в середине, а в начале там всякие переменные присваиваються и т.д. |
||||||
|
|||||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 6 Всего: 64 |
-------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| ZBugz |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Ну все тоже самое
Synchronize(Progress) идет через таймер, что бы ниче при отображении не мигало. Я подозреваю его, хотя что free, что destroy, пофигу, все равно отрабатывает Synchronize(Stop), а в то же время поток еще Synchronize(Progress) Добавлено через 6 минут и 3 секунды Причем щас прошелся еще раз дебагером, выходит Synchronize(Stop), все там делает, а потом как все там прошел, уходит в Synchronize(Progress) Это как ? |
||||
|
|||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 6 Всего: 64 |
ИМХО лучше так:
И что-то не видно Stream... -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| ZBugz |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Ну да, чето не заметил
|
||||||
|
|||||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 6 Всего: 64 |
ZBugz, ты меня запутал -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| ZBugz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Дык нету ошибки явной. Смысл вот в чем, все работает, берешь удаляешь данные из ячейки listview, передаю терминэйт, а так как уже после терминэйт все free, то вывод данных в ячейку падает в ошибку.... Их брать то уже негде... Кстати, почитал я, так вот, такое часто, к примеру, при копировании файла. Так вот у меня именно тоже самое что и тут http://forum.vingrad.ru/forum/topic-60076/...ry480375/0.html Тока в этой статье ничерта не понятно как реализовать остановку |
|||
|
||||
| ZBugz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Тут пришел мой начальник
Далее, кое че подправил, читая статью про потоки, все почти работает. Смысл в том что действительно, делая файловые операции в потоки, это жесть, в плане отловки закрытия файлов, поток потоком, а файловые операции, это лперации... Ими управляет система. |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Это не бред, и живёт таймер в потоках весьма хорошо. Бред - эта цитата. Вот Application.ProcessMrssages в потоках - это явный бред, используется лишь с целью исправить ошибки проектирования и реализации, внося в приложение элемент непридсказуемости поведения и увеличивая количество глюков. >Автор Как я выше написал, чтобы дождаться окончания выполнения поточной функции, в Delphi есть метод TThread.WaitFor. Твоя нить при установке флага Terminated должна немедленно закончить работу. Непонятно, в чём у тебя проблема. А не судьба проверить установку флага Terminated везде, где это может повлиять на работу приложения? -------------------- |
|||
|
||||
| ZBugz |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Значит таймер может быть рожденный в потоке и жить хорошо ?
А как тогда быть ? Вообще убрать ?
Я не пойму как ее использовать
Так она и вроде как и заканчивает работу.
Я сделал это, в одном месте (проверку в TCopyThread.Progress, все хорошо), но проблема именно в том, что сам windows не успевает закрыть файлы или ему антивирус мешает и т.д. , поэтому получаеться что я пытаюсь открыть еще не закрытый файл... |
||||||||||
|
|||||||||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Вполне;) ни в коем случае не используй эту функцию в дополнительных потоках. Вот смотри: В реализации TThread устанавливаешь FreeOnTerminated := False; В коде, где у тебя нужно дождаться завершения потока:
После выполнения этого кода у тебя гарантированно отработал деструктор потока. Попробуй код из предыдущего абзаца. Если ошибка останется, значит всё же логическая ошибка где-то в другом месте. -------------------- |
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 6 Всего: 64 |
Демо, ZBugz хочет сделать эту проверку в самом потоке (в функции Execute), если я правильно понял Ну и это
Будет там не в тему. Если честно, я до сих пор не могу понять что и где работает не так -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Дык перечитай топик-) Terminate для завершения потока и используется. У автора секретная программа -------------------- |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |