Здравствуйте, east, Вы писали:
E>Т.е. записать данные в кеш и не сообщать, что данные готовы, чтобы не вызывался Read?
Сообщить, что есть файл вызовом ProtocolSink.ReportProgress(BINDSTATUS_CACHEFILENAMEAVAILABLE), и при поступлении данных писать их в этот файл. При этом если Read вызывается, то и отдавать полученные данные.
Я делаю следующие вызовы:
ProtocolSink.ReportProgress(BINDSTATUS_FINDINGRESOURCE, PWideChar(Url));
ProtocolSink.ReportProgress(BINDSTATUS_CONNECTING, PWideChar(Url));
ProtocolSink.ReportProgress(BINDSTATUS_SENDINGREQUEST, PWideChar(Url));
ProtocolSink.ReportProgress(BINDSTATUS_MIMETYPEAVAILABLE, PWideChar(Response.MIMEType));
ProtocolSink.ReportProgress(BINDSTATUS_CACHEFILENAMEAVAILABLE, PWideChar(Stream.FileName));
ProtocolSink.ReportData(BSCF_FIRSTDATANOTIFICATION, 0, 0);
ProtocolSink.ReportData(BSCF_INTERMEDIATEDATANOTIFICATION, Saved, Size); // Много раз
ProtocolSink.ReportData(BSCF_LASTDATANOTIFICATION or BSCF_DATAFULLYAVAILABLE, Saved, Size);
ProtocolSink.ReportResult(S_OK, Response.Status, nil);