Tôi đã viết phương thức máy chủ DataSnap trả về một đối tượng TStream để truyền tệp. Ứng dụng khách gọi phương thức và đọc luồng tốt. Vấn đề của tôi là cuộc gọi phương thức mất một thời gian để hoàn thành trước khi đối tượng TStream có sẵn để đọc, nhưng ở phía máy chủ tôi có thể thấy rằng cuộc gọi phương thức chỉ mất một giây để tạo đối tượng trả về. Tôi đã hy vọng đối tượng luồng sẽ được trả lại ngay lập tức để tôi có thể đọc luồng và hiển thị thanh tiến trình cho tiến trình tải xuống. Có cách nào khác tôi có thể làm điều này không?Delphi XE2 DataSnap - Tải tập tin qua TStream Với thanh tiến trình
Phương pháp máy chủ là rất đơn giản:
function TServerMethods.DespatchDocument(sCompanyID, sDocOurRef: string): TStream;
var
sSourceFilePath: string;
strFileStream: TFileStream;
begin
sSourceFilePath := GetDocumentPDFFilePath(sCompanyID, sDocOurRef);
strFileStream := TFileStream.Create(sSourceFilePath, fmOpenRead);
Result := strFileStream;
end;
thể trùng lặp của [ProgressBar cho TResourceStream (Delphi)] (http: // stackoverflow. com/questions/6081841/progressbar-for-tresourcestream-delphi) – NGLN