在webClient中输出文本到文本框.DownloadFile循环
本文关键字:文本 DownloadFile 循环 输出 webClient | 更新日期: 2023-09-27 18:08:19
我不知道该如何表达我的问题。我试图在foreach循环中下载500个csv文件,我正在下载一些错误。所以我在每个webClient之前和之后都放了一个.text输出。DownloadFile电话。问题是它似乎没有输出每个。text文件,因为我去;如果成功,它将在最后输出它们,如果失败,它将不输出任何。有一些线索/秘密的事情我不知道。有人能帮我做我想做的事吗?谢谢(这方面的新手)。下面是我的代码。
foreach (var ticker in tickers)
{
tbOutput.Text += "Starting Download of : " + ticker + "'n";
var url = string.Format(urlPrototype, ticker, startMonth, startDay, startYear, finishMonth, finishDay, finishYear, "d");
var csvfile = directory + "''" + ticker.ToUpper() + ".csv";
webClient.DownloadFile(url, csvfile);
tbOutput.Text += "End Download of : " + ticker + "'n";
}
很难说你使用的是什么技术,但你最有可能调用一个事件或post-back,所以你在完全执行后得到结果,如果你想看到你下载的每个文件的进度,你可以尝试使用一些像
WebClient。DownloadFileCompleted事件
尝试下载文件,因为它会抛出webeexception。https://msdn.microsoft.com/en-us/library/ez801hhe%28v=vs.100%29.aspx
foreach (var ticker in tickers)
{
tbOutput.Text += "Starting Download of : " + ticker + "'n";
var url = string.Format(urlPrototype, ticker, startMonth, startDay, startYear, finishMonth, finishDay, finishYear, "d");
var csvfile = directory + "''" + ticker.ToUpper() + ".csv";
ThreadPool.QueueUserWorkItem((o) =>
{
try
{
webClient.DownloadFile(url, csvfile);
System.Windows.Application.Current.Dispatcher.Invoke(new Action(() =>
{
//do something or output like
tbOutput.Text += "End Download of : " + ticker + " (OK)'n";
}));
}
catch (Exception ex)
{
System.Windows.Application.Current.Dispatcher.Invoke(new Action(() =>
{
//do something or output like
tbOutput.Text += "End Download of : " + ticker + " (FAIL)'n";
}));
}
finally
{
System.Windows.Application.Current.Dispatcher.Invoke(new Action(() =>
{
//do something or output like
//tbOutput.Text += "End Download of : " + ticker + "'n";
}));
}
}
}