我正在开发一个 C# 项目来从 Internet 下载文件。
我会在下载过程中展示他们的进度。我应该支持超时属性。
我尝试使用WebClient类。有DownloadFile () 和DownloadFileAsync () 函数。
- 当我使用DownloadFile () 函数时,我可以设置 Timeout 属性,覆盖GetWebRequest () 函数。但是,我无法触发事件处理程序,因此无法显示进度。
- 当我使用DownloadFileAsync () 函数时,我可以触发事件处理程序,因此我可以显示进度。但是,在这种情况下,我无法设置超时。
从互联网上,我可以找到一些关于使用线程手动设置超时的方法的文章。
但是,我认为所有这些都是不正确的。他们在整个下载过程中设置超时。但是根据文件的大小,下载会很短或很长。
我怎么解决这个问题?