在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";
    }

在webClient中输出文本到文本框.DownloadFile循环

很难说你使用的是什么技术,但你最有可能调用一个事件或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";
            }));
        }
    }
}