Конференция "Сети" » Проблемма зависания IDTCPClient
 
  • PonosetcDM © (09.08.10 16:58) [0]
    Простите уважаемые.... Я передаю файл пусть 100 Мб, по сети используя Indy, делаю это с помощью WriteFile, как мне избавится от зависонов...Существует ли возможность отобразить бегущую полосу загрузки в это время, или проценты, или отобразить какую-ть Gif-анимацию... заранее спасибо...
  • Eraser © (09.08.10 21:12) [1]
    многопоточность.
  • PonosetcDM © (10.08.10 08:44) [2]
    Что подразумевается тут??? Вызывать WriteFile в отдельном потоке, или же делать прогрессбар в отдельном потоке...
  • Сергей М. © (10.08.10 09:47) [3]
    При условии стабильного и достаточно высокоскоростного соединения можно и не заморачиваться с отдельным потоком.
    Достаточно организовать поблочную передачу.
    Делаешь своего наследника TIdIOHandler, в нем перекрываешь вирт.метод WriteFile. В перекрытом WriteFile создаешь своего наследника TIdReadFileExclusiveStreamб с перекрытым вирт.методом Read, в теле которого читаешь сравнительно небольшие блоки из потока-источника и обновляешь прогресс-индикатор.
  • PonosetcDM © (10.08.10 10:26) [4]
    Пробывал переколбасить исходный код WriteFile и при посылке очередного блока делал SendMessage(ProgressBarHWND, WM_SETNEWPROGRESS, Prcent, 0);
    но ничего не получалось, почиму???.... Скорее всего это ваапще ересь полная..., то, что я делал..)))
    ProgressBarHWND - Handle формы, которая создается в отдельном потоке, и у которой описан обработчик сообщения WM_NEWSETNEWPROGRESS = WM_USER+1 ;
  • Сергей М. © (10.08.10 11:12) [5]

    > Скорее всего это ваапще ересь полная..., то, что я делал


    Эт точно)
  • Dennis I. Komarov © (16.08.10 13:19) [6]

    > Скорее всего это ваапще ересь полная..., то, что я делал..)))
    > ProgressBarHWND - Handle формы, которая создается в отдельном
    > потоке,

    Значит сжечь на костре...
 
Конференция "Сети" » Проблемма зависания IDTCPClient
Есть новые Нет новых   [134436   +25][b:0][p:0]