-
Простите уважаемые.... Я передаю файл пусть 100 Мб, по сети используя Indy, делаю это с помощью WriteFile, как мне избавится от зависонов...Существует ли возможность отобразить бегущую полосу загрузки в это время, или проценты, или отобразить какую-ть Gif-анимацию... заранее спасибо...
-
многопоточность.
-
Что подразумевается тут??? Вызывать WriteFile в отдельном потоке, или же делать прогрессбар в отдельном потоке...
-
При условии стабильного и достаточно высокоскоростного соединения можно и не заморачиваться с отдельным потоком. Достаточно организовать поблочную передачу. Делаешь своего наследника TIdIOHandler, в нем перекрываешь вирт.метод WriteFile. В перекрытом WriteFile создаешь своего наследника TIdReadFileExclusiveStreamб с перекрытым вирт.методом Read, в теле которого читаешь сравнительно небольшие блоки из потока-источника и обновляешь прогресс-индикатор.
-
Пробывал переколбасить исходный код WriteFile и при посылке очередного блока делал SendMessage(ProgressBarHWND, WM_SETNEWPROGRESS, Prcent, 0); но ничего не получалось, почиму???.... Скорее всего это ваапще ересь полная..., то, что я делал..))) ProgressBarHWND - Handle формы, которая создается в отдельном потоке, и у которой описан обработчик сообщения WM_NEWSETNEWPROGRESS = WM_USER+1 ;
-
> Скорее всего это ваапще ересь полная..., то, что я делал
Эт точно)
-
> Скорее всего это ваапще ересь полная..., то, что я делал..))) > ProgressBarHWND - Handle формы, которая создается в отдельном > потоке,
Значит сжечь на костре...
|