Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Приоритет 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]

Приоретет процессу/потоку выставлять пониже???


Наверх

Титульная страница Поиск, карта сайта Написать письмо