Tôi muốn tải xuống tệp từ chương trình Delphi của tôi trong một chuỗi riêng biệt dành riêng cho việc tải xuống.Tải xuống tệp từ Internet trong khi có thể hủy tải xuống bất kỳ lúc nào
Sự cố là chương trình chính có thể bị đóng bất kỳ lúc nào (do đó, chuỗi tải xuống cũng có thể bị chấm dứt bất kỳ lúc nào). Vì vậy, ngay cả khi không có kết nối hoặc máy chủ bị trễ trong giây quý giá, tôi cần một cách để chấm dứt chuỗi tải xuống trong vòng một hoặc hai giây.
Bạn khuyến nghị sử dụng chức năng nào?
Tôi đã thử nghiệm với InterOpenURL/InternetReadFile nhưng không có tham số hết giờ. Nó có một phiên bản không đồng bộ nhưng tôi không thể tìm thấy bất kỳ ví dụ Delphi làm việc và tôi không chắc chắn nếu phiên bản không đồng bộ sẽ bảo vệ tôi khỏi bị treo ...
Sử dụng ổ cắm đã được đề xuất cho tôi trước đây, nhưng TClientSocket doesn dường như không có chức năng hết thời gian.
Tôi cần được chuẩn bị đầy đủ để nếu người dùng có sự cố kết nối Internet trên máy tính của mình hoặc máy chủ web tiếp tục trì hoãn ứng dụng của tôi không bị treo trước khi đóng.
Hãy ghi nhớ khi trả lời rằng tôi không muốn sử dụng bất kỳ thành phần của bên thứ ba cũng như Indy. Bất kỳ mã ví dụ nào đều được đánh giá cao.
Cảm ơn bạn!
Lệnh 'InternetReadFile' có thể được gọi với một số tiền tùy ý các byte được lấy trong một vòng lặp. Nếu bạn kết hợp điều này với một kiểm tra chấm dứt trong chủ đề của bạn, gắn cờ cho các chủ đề chấm dứt khi đóng ứng dụng và chờ cho các chủ đề để chấm dứt, bạn không nên có bất kỳ "treo". –