Форум: "Сети";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
ВнизПриоритет IdFTP Найти похожие ветки
← →
Pavelkq (2005-05-05 14:26) [0]Написал программу синхронизации удаленного сервера ФТП с локальной папкой. На моей тачке работает ничего так. А когда запустил эту штуку на сервере, все юзеры отвалились и все базы стали недоступны пока не закрыл прогу. Вешалка происходит на том месте, где идет команда
IdFTP1.Get("RemoteFileName","LocalFileName",True);
Вообще, сама программа работает хорошо, все скачивает, что надо и красиво завершается, но во время ее работы все остальное становится мертным. Что делать?
← →
TUser © (2005-05-05 14:32) [1]Приоретет процессу/потоку выставлять пониже???
← →
Pavelkq (2005-05-05 15:07) [2]Так я никаких потоков не организовывал. Пишу на форм.крейте конект и гет. и все. Вообще, эта проблема у меня была не только с этой программой. Например, если я делаю серьезные операции с массивами (сравнение с сортировкой), то тоже все вешается. При этом форма сама тоже замирает (на ней ничего не отображается и ничего не работает). Я, конечно на сервере в диспетчере задач понизил приоритет, но как бы это сделать корректно? Как-то я грузил вордовский файл в массив через поток, там ничего не тормозило. Может правда потоком скачивать файлы? А нельзи ли пример, как это организовать? Я не силен в потоках.
← →
Cobalt © (2005-05-05 15:07) [3]А от какого пользователя работает прога?
← →
Pavelkq (2005-05-05 15:08) [4]Прога от администратора.
← →
Cobalt © (2005-05-05 15:29) [5]я просто помню, есть при установке такая фишка, ограничение на количество подключений...
← →
Layner © (2005-05-05 15:41) [6]ПРосто все операции с файлами и т.п. надо делать в отдельном потоке.
← →
Pavelkq (2005-05-06 06:49) [7]Ребята, пришлите, пожалуйста пример, как эти потоки организовать?
← →
Digitman © (2005-05-06 11:16) [8](%DELPHI)\Demos\Threads\thrddemo.dpr
← →
Pavelkq (2005-05-06 14:19) [9]Вот нашел как процесс создавать.
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 (выделил жирным). Как это сделать?
← →
Pavelkq (2005-05-06 14:54) [10]... т.е. мне надо создать процесс для команды
IdFTP1.Get("RemoteFileName","LocalFileName",True);
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.015 c