![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Чисто теоретический вопрос на счёт Тредов [D7, WinXP]
Фёдор Мегатронов © (2004-08-24 20:25:00)Вообще чисто теоретически работа с потоками в которых открываеться на чтение файл в инете и открываеться на запись файл на винте может как-то отличаться от обычной работы ?
потому что у меня поток с такими действиями внутри категорически отказываеться делать Suspend или Terminate насильно.
там в цикле чтения/скачивания есть проверка на терминэйт и суспенд ... и если, то закрываються все инет сессии и файл на винте.
Однако поток корректно завершаеться только сам-по-себе, когда файл успешно скачан.
Если я нажимаю кнопку c TPotok.Terminate, то вижу такую вот надпсь
Access Violation at address бла-бла in module Project1.exe. Read of Address бла-бла..
сижу уже с этой ощибкой чёрти знает сколько.
Спокойно завершает потоки в которых выполняються простейшие математические операции ... а вот с инетом - нивкакую ...
Фёдор Мегатронов (2004-08-24 22:37:00) [1]всё ... я нашел где я дурак .. у меня по неизвестным причинам этот обьект был обьявлен в двух модулях ... в одном он создавался, а в другом он закрывался 8) .. и в каждом модуле - своё описание ..
гыг
всё теперь спокойно прекращаеться и продолжаеться ...
правдо перестало опять показывать правельный размер файла 8(((
MIm1 (2004-08-24 22:11:00) [2]Ну чтож, отлаживайте, читайте книги если не получается найти баг.
Фёдор Мегатронов (2004-08-24 21:59:00) [3]FreeOnTerminate стоит, но у меня же идёт скачивание. Тоесть пока идёт постепенное чтение/запись файла - поток работает, но остановить или терминэйтнуть я его не могу.
Mim1 (2004-08-24 21:40:00) [4]Дело в том что в вопросе вы сказали что при вызове метода класса а не обьекта, у вас происходит ошибка. На это я и пытался обратить ваше внимание.
В [3] видно что это не так, то есть вызывается метод обьекта.
А на момент выполнения DThread.Terminate; обьект все еще существует?, может он разрушается до этого при помоoщи FreeOnTerminate?
Фёдор Мегатронов (2004-08-24 21:20:00) [5]зачем мне его активизировать ещё раз перед закрытием ???
у меня есть кнопка
DThread := ThreadClass.Create(true);
DThread.Priority := tpLower;
DThread.Resume;
и есть кнопка
DThread.Terminate;
я совсем дурак ?
Mim1 (2004-08-24 21:11:00) [6]
> Если я нажимаю кнопку c TPotok.Terminate, то вижу такую
> вот надпсь
>
> Access Violation at address бла-бла in module Project1.exe.
> Read of Address бла-бла..
Может всетаки
var p:TPotok;
begin
p := TPotok.create(false);
p.Terminate;
а не TPotok.Terminate ?
Алхимик (2004-08-24 20:43:00) [7]
> Фёдор Мегатронов (24.08.04 20:25)
Неправда. Вы Виктор Степанович Черномырдин.