![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Доброго времени суток!
Значит ситуация такая: Имеется функция: Код:
Вся соль в том что когда копируются файлы n GB программа намертво виснет. Решил запихать все это дело в TThread что успешно получилось. С одним файлом теперь все нормально и все копируется. Но если несколько файлов, то опять же все виснет. т.к. все потоки запускаются одновременно. Как их поставить в очередь? Чтобы цикл не продолжил работу пака поток не завершит работу? |
![]() |
![]() |
![]() |
#2 |
Delphi master
Пользователь
Регистрация: 28.05.2011
Сообщений: 96
|
![]()
А зачем так усложнять задачу?
Пишешь: Код:
БЯЯЯГГАААААА
Последний раз редактировалось Leo08; 28.05.2011 в 22:14. |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Запустить поток синхронно,потом следующий и т.д. В коде запуск потока с ожиданием завершения
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Пока вернулся к старому варианту(без потоков).
Согласен с Пеполом Феникса. В моём коде идет корпирование блокам данных, размером 48 кб(Для меня это с верхом(файлов более 200 метров не будет уж точно)). В вашем случае в Tstream летит сразу весь файл(а это огого сколько времени). За это время я своим методом перемещу уже половину файла(а то и больше, если буфер увеличить). |
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]() Цитата:
> все виснет. т.к. все потоки запускаются одновременно нечему там виснуть. хоть 50 потоков запусти. в CallBackProc что происходит? > Как их поставить в очередь? не знаю, зачем это надо, но перед выходом из FastFileCopy() запускай новый поток и всё.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
|
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Чтение из файла через поток | tim91 | Общие вопросы Delphi | 3 | 02.03.2011 09:35 |
Проблема с открытием файлов через макрос | choky | Microsoft Office Excel | 5 | 31.12.2009 19:34 |
Скоростное копирование файлов через RAM | 3D Hunter | Общие вопросы Delphi | 9 | 03.07.2009 19:41 |
Копирование файлов через http протокол | Serega_P | Работа с сетью в Delphi | 3 | 06.12.2008 14:35 |
поток файлов | мандарин | Общие вопросы Delphi | 1 | 24.04.2007 12:20 |