首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >下载文件并将其添加到网格视图的最快方法是什么?

下载文件并将其添加到网格视图的最快方法是什么?
EN

Stack Overflow用户
提问于 2015-05-25 05:50:47
回答 1查看 62关注 0票数 0

我正在下载一个包含许多域的文本文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    private void bgWorker_DoWork(object sender, DoWorkEventArgs e)
    {
        // backgroundworker
        string action = e.Argument as string;
        if (action == "xc_download")
        {
            // this downloads the daily domains from the main site

            // format the date to append to the url
            DateTime theDate = DateTime.Now;
            theDate.ToString("yyyy-MM-dd");
            string downloadURL = String.Empty;
            downloadURL = ("http://www.namejet.com/Download/" + (theDate.ToString("M-dd-yyyy") + ".txt"));

            using (WebClient wc = new WebClient())
            {
                string urls = wc.DownloadString(downloadURL);
                dgView.Rows.Add(urls);
            }

        } // if (action == "xc_download")
    }

一旦下载,我就会尝试将它们添加到一个数据集中。问题是,这很慢。是否有更快的方法下载文本文件并将数据添加到我应该使用的网格视图中?

EN

回答 1

Stack Overflow用户

发布于 2015-05-25 06:21:26

您可以并行处理下载过程。一种选择是TPL的Parallel.ForEach。您可以设置并发操作(下载)的最大数量,以防止服务器被淹没。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
List<string> downloads = new List<string>();
downloads.Add(...);

Parallel.ForEach
( downloads
, new ParallelOptions() { MaxDegreeOfParallelism = 8 } /* max 8 downloads simultaneously */
, url => Download(url)
);

然后创建一个下载方法并在其中处理下载:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private void Download(string url)
{
    // download

    this.Invoke((MethodInvoker)delegate()
    {
        // update the UI inside here
    });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30439946

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文