![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Приоритет IdFTP [D6, Win2k]
Pavelkq © (2005-05-05 14:26:00)Написал программу синхронизации удаленного сервера ФТП с локальной папкой. На моей тачке работает ничего так. А когда запустил эту штуку на сервере, все юзеры отвалились и все базы стали недоступны пока не закрыл прогу. Вешалка происходит на том месте, где идет команда
IdFTP1.Get('RemoteFileName','LocalFileName',True);
Вообще, сама программа работает хорошо, все скачивает, что надо и красиво завершается, но во время ее работы все остальное становится мертным. Что делать?
Pavelkq (2005-05-06 14:54:00) [1]... т.е. мне надо создать процесс для команды
IdFTP1.Get('RemoteFileName','LocalFileName',True);
Pavelkq (2005-05-06 14:19:00) [2]Вот нашел как процесс создавать.
unit uMonThread;
interface
uses
Classes, windows, SysUtils;
type
TMonDirThread = class(TThread)
private
FPath: String; //Проверяемый каталог
protected
procedure Execute; override;
public
constructor Create(aPath: String);
end;
implementation
uses
ufMain;
constructor TMonDirThread.Create(aPath: String);
begin
inherited Create(True); //Созданный поток создается в приостановленном состоянии
FreeOnTerminate := True; //Поток освободит ресурсы при окончании работы
FPath := aPath; //Проверяемый каталог
Self.Priority := tpHighest; //Очень высокий приоритет
Resume;
end;
procedure TMonDirThread.Execute;
var
HandleChange: THandle; //Handle создаваемого объекта для ожидания события
begin
HandleChange :=
FindFirstChangeNotification(
PChar(FPath), //Проверяемый каталог
False, //Подкаталоги не проверяются
FILE_NOTIFY_CHANGE_FILE_NAME + //Проверка создания/удаления/ FILE_NOTIFY_CHANGE_ATTRIBUTES); //переименования/изменения файлов
while not Terminated do
begin
case WaitForSingleObject(HandleChange,1000) of
WAIT_FAILED: Terminate; //Ошибка, завершаем поток
end;
end;
end;
end.
Но там был тим Handle, а у меня Cardinal(выделил жирным). Как это сделать?
Digitman (2005-05-06 11:16:00) [3](%DELPHI)\Demos\Threads\thrddemo.dpr
Pavelkq (2005-05-06 06:49:00) [4]Ребята, пришлите, пожалуйста пример, как эти потоки организовать?
Layner (2005-05-05 15:41:00) [5]ПРосто все операции с файлами и т.п. надо делать в отдельном потоке.
Cobalt (2005-05-05 15:29:00) [6]я просто помню, есть при установке такая фишка, ограничение на количество подключений...
Pavelkq (2005-05-05 15:08:00) [7]Прога от администратора.
Pavelkq (2005-05-05 15:07:00) [8]Так я никаких потоков не организовывал. Пишу на форм.крейте конект и гет.и все. Вообще, эта проблема у меня была не только с этой программой. Например, если я делаю серьезные операции с массивами (сравнение с сортировкой), то тоже все вешается. При этом форма сама тоже замирает (на ней ничего не отображается и ничего не работает). Я, конечно на сервере в диспетчере задач понизил приоритет, но как бы это сделать корректно? Как-то я грузил вордовский файл в массив через поток, там ничего не тормозило. Может правда потоком скачивать файлы? А нельзи ли пример, как это организовать? Я не силен в потоках.
Cobalt (2005-05-05 15:07:00) [9]А от какого пользователя работает прога?
TUser (2005-05-05 14:32:00) [10]Приоретет процессу/потоку выставлять пониже???