Me gustaría descargar un archivo de mi programa Delphi en un hilo separado dedicado a la descarga.Descargar un archivo de Internet mientras se puede cancelar la descarga en cualquier momento
El problema es que el programa principal se puede cerrar en cualquier momento (por lo tanto, el hilo de descarga puede terminarse en cualquier momento). Entonces, incluso si no hay conexión o el servidor se demora en segundos, necesito una forma de terminar el hilo de descarga dentro de uno o dos segundos.
¿Qué función me recomiendan usar?
He experimentado con InterOpenURL/InternetReadFile pero no tiene un parámetro de tiempo de espera. Tiene una versión asíncrona pero no pude encontrar ningún ejemplo de Delphi en funcionamiento y no estoy seguro de si la versión asíncrona me protegerá de bloqueos ...
Me han recomendado usar sockets, pero TClientSocket no Parece que tampoco tiene una función de tiempo de espera.
Necesito estar totalmente preparado, por lo que si el usuario tiene problemas de conexión a Internet en su computadora o si el servidor web se queda rezagado, mi aplicación no se bloquea antes de cerrar.
Tenga en cuenta al responder que no quiero utilizar ningún componente de terceros ni Indy. Cualquier código de ejemplo es muy apreciado.
¡Gracias!
El 'InternetReadFile' puede ser llamada con una cantidad arbitraria de bytes que se debe buscar en un bucle. Si combina esto con un cheque Terminado en su hilo, marque el hilo para la terminación al cerrar la aplicación y espere a que termine el hilo, no debe tener ningún "cuelga". –