我想通过使用 webclient 方法和同时运行的多个线程下载多个文件。我的 url 结构取决于变量“int i”,所以我使用 for 循环来生成 url 和文件路径。问题是在启动线程之前,url 和 filepath 值都会更改。时间线如下:
在主循环中,url = "url1" 和 path = "filepath1"。
使用值“url1”和“filepath1”调用 Thread1。
在主循环中,url = "url2" 和 path = "filepath2"。
使用值“url2”和“filepath2”调用 Thread2。
Thread1 以值“url2”和“filepath2”开头。
Thread2 以值“url2”和“filepath2”开头。
我找不到任何优雅的解决方案。你有什么建议?
string path = "";
string url = "";
string baseURL = "http://www.somewebsite.com/12/";
for (int i = 10; i <= DateTime.Now.Month; i++)
{
path = "C:\\folder\\" + i.ToString() + ".html";
url = baseURL + i.ToString();
Thread webThread = new Thread(delegate()
{
downloadScheduleFile(url,path);
});
webThread.Start()
}
private void downloadScheduleFile(string url, string filepath)
{
var client = new WebClient();
try
{
client.DownloadFile(url, filepath);
}
catch(WebException e) {
Console.WriteLine(System.Threading.Thread.CurrentThread.Name+e.Message);
}
}