Конференция "Сети" » Synapse FTP в потоке - можно ли?
 
  • Romingood © (13.10.16 01:53) [0]
    Привет всем. Прошерстил все форумы, ответа не нашел.

    Есть Synapse, скачивает - закачивает файл по ftp (код стандартный),
    всё работает отлично, показывает статус бар загрузки заливки файлов.
    (наверное иоказывает ))) )

    Но. При начале FTP загрузки файла (или закачки на FTP сервер) форма виснет мертво. Потом отвисает после завершения загрузки.

    Всё бы хорошо, форма-то хрен с ней, но статус бар-то не шевелится.
    Id Антифриз и Application.Processmessages НИКАК не помогает. Мне бы хоть раз в 10 сек. форму обновить, но виснет глухо, а файлы большие, под 500 мб.  

    Вопрос. Как мне правильно перенести ftp часть в thread?

    Я перенес (поток организовал прямо в Form1),

    (запускаю его так
     
    FtpThread:=TMyThread.Create(False);
     FtpThread.Priority:=tpNormal;
     FtpThread.FreeOnTerminate:=true;)



    он работает, форма перестала виснуть, но во первых, я не знаю как передать в этот поток около 8 переменных (размер файла, имя, бла бла бла и еще вернуть в форму обратно одну переменную с результатами работы), глобальные переменные, объявленные в форме,  поток не видит почему-то, также не видятся глобальные переменные, объявленнные прямо в файле Dpr...

    И второй вопрос - там в форме присутствует процедура вычисления пробежавших байт, чтобы посчитать, че проказывать на прогрессбаре.
    В форме у меня всё работает.



    procedure TForm1.DSockStatus(Sender: TObject; Reason: THookSocketReason;
     const Value: String);
    begin
     if Reason in [HR_ReadCount, HR_WriteCount] then
       begin

    ////вычисление размера бла бла. не суть

       countfilesize:=countfilesize+strtoint(Value);

       end;
    end;




    Но я не пойму, как прописать эту же процедуру, но внутри будущего потока, т.к. воспользоваться этой процедурой из потока не получается, он ее просто не видит.  

    Вроде люди говорят, что подобное (и  передачу параметров, и процедуру) нужно оформлять в виде класса, но я в ООП не силен,  мне б набросок...

    Спасибо заранее.
  • NoUser © (15.10.16 23:22) [1]
    > Прошерстил все форумы, ответа не нашел.
    Садись читать книжки и справку.

    > объявленнные прямо в файле Dpr.
    http://www.delphisources.ru/forum/showthread.php?t=13908

    > мне б набросок
    http://www.delphisources.ru/forum/showthread.php?t=13173

    > но я в ООП не силен
    ну тогда дюж winapi - BeginThread \ CreateThread
 
Конференция "Сети" » Synapse FTP в потоке - можно ли?
Есть новые Нет новых   [118626   +13][b:0][p:0.001]