antarey Опубликовано 2 октября, 2016 Поделиться Опубликовано 2 октября, 2016 Как в провести синхронизацию для задачи? Есть NetHTTPClient void __fastcall TfrmMain::NetHTTPClientReceiveData(TObject * const Sender, __int64 AContentLength, __int64 AReadCount, bool &Abort) { if (AContentLength > 0) { pbMain->Value = ((float)AReadCount / (float)AContentLength) * 100.f; } else pbMain->Value = AReadCount; } //-------------------------------------------------------------------- void __fastcall TfrmMain::SpeedButton1Click(TObject *Sender) { _di_ITask tsLoadNewComp = TTask::Create([&](){ std::auto_ptr<TStream> inputStream(new TFileStream(System::Ioutils::TPath::Combine(TDirectory::GetParent(ParamStr(0)), "index.dat"), fmCreate)); NetHTTPClient->AcceptEncoding = "gzip, deflate"; NetHTTPClient->Get("..............", inputStream.get()); }); tsLoadNewComp->Start(); } Как сделать, чтобы в задаче tsLoadNewComp отрабатывалась процедура NetHTTPClientReceiveData? Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 2 октября, 2016 Модераторы Поделиться Опубликовано 2 октября, 2016 http://docwiki.embarcadero.com/Libraries/Berlin/en/System.Threading.TTask.Run Kitty 1 Цитата Ссылка на комментарий
0 antarey Опубликовано 2 октября, 2016 Автор Поделиться Опубликовано 2 октября, 2016 TTask::Create и TTask::Run не сильно отличаются по реализации , но я так и не понял как синхронизировать событие компонента NetHTTPClient внутри задачи Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 3 октября, 2016 Модераторы Поделиться Опубликовано 3 октября, 2016 Kitty 1 Цитата Ссылка на комментарий
0 antarey Опубликовано 5 октября, 2016 Автор Поделиться Опубликовано 5 октября, 2016 ZuBy, ето я понимаю и ето все реализовано. Просто для NetHTTPClient есть событие NetHTTPClientReceiveData и оно не отрабатывается. Ето событие надо как-то подвязать через синхронизацию. Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 5 октября, 2016 Модераторы Поделиться Опубликовано 5 октября, 2016 1 минуту назад, antarey сказал: ZuBy, ето я понимаю и ето все реализовано. Просто для NetHTTPClient есть событие NetHTTPClientReceiveData и оно не отрабатывается. Ето событие надо как-то подвязать через синхронизацию. для чего это событие используется? Цитата Ссылка на комментарий
0 antarey Опубликовано 5 октября, 2016 Автор Поделиться Опубликовано 5 октября, 2016 В етом событии отображается прогресс загрузки файла Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 5 октября, 2016 Модераторы Поделиться Опубликовано 5 октября, 2016 в Sample есть пример Цитата C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\RTL\HttpDownload Kitty 1 Цитата Ссылка на комментарий
0 antarey Опубликовано 5 октября, 2016 Автор Поделиться Опубликовано 5 октября, 2016 Нда, иногда и примеры надо смотреть , спасибо за подсказку. Равиль Зарипов (ZuBy) 1 Цитата Ссылка на комментарий
Вопрос
antarey
Как в провести синхронизацию для задачи?
Есть NetHTTPClient
Как сделать, чтобы в задаче tsLoadNewComp отрабатывалась процедура NetHTTPClientReceiveData?
Ссылка на комментарий
8 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.