首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >证明一个文件的存在?另外,如何停止你的程序冻结时美化网站

证明一个文件的存在?另外,如何停止你的程序冻结时美化网站
EN

Stack Overflow用户
提问于 2013-03-24 08:54:15
回答 1查看 178关注 0票数 0

嘿,我开始学习C#和HtmlAgilityPack了,到目前为止,我正在做一个小测试项目。我遇到的一个问题是检查文件是否已经存在,以便不下载两次。

另一个问题是,在抓取网站/下载图像时,我的整个程序会冻结一段时间,然后才能恢复功能,有没有办法解决这个问题?

代码语言:javascript
运行
复制
if (!File.Exists(@"Res\" + pokeName + ".jpg"))
        {
            var item = doc.DocumentNode.SelectNodes("//a[@class='image']//img")[0];
            if (doc.DocumentNode.SelectNodes("//a[@class='image']//img") != null)
            {
                getImage(item.GetAttributeValue("src", ""));
                pictureBox1.Load(@"Res\" + pokeName + ".jpg");
            }
        }
        else
        {
            pictureBox1.Load(@"Res\" + pokeName + ".jpg");
        }

public void url(String GetImage){

代码语言:javascript
运行
复制
        string imageUrl = @""+ url;
        string saveLocation = @"Res\"+ pokeName + ".jpg";

        byte[] imageBytes;
        HttpWebRequest imageRequest = (HttpWebRequest)WebRequest.Create(imageUrl);
        WebResponse imageResponse = imageRequest.GetResponse();

        Stream responseStream = imageResponse.GetResponseStream();

        using (BinaryReader br = new BinaryReader(responseStream ))
        {
            imageBytes = br.ReadBytes(500000);
            br.Close();
        }
        responseStream.Close();
        imageResponse.Close();

        FileStream fs = new FileStream(saveLocation, FileMode.Create);
        BinaryWriter bw = new BinaryWriter(fs);
        try
        {
            bw.Write(imageBytes);
        }
        finally
        {
            fs.Close();
            bw.Close();
        }
    }

任何帮助都将不胜感激:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-24 10:10:30

您的程序可能会冻结,因为您在UI线程上有长时间运行的项。

您可能需要考虑使用前面提到的后台工作程序,或者(如果使用的是.Net 4.5)新的异步/等待系统

对于这种情况,当您有潜在的长时间等待或许多项要处理而不是迭代地获取它们时,GetStreamAsync非常适合这种情况

另外顺便说一下,如果我有3张图片{1.jpg,2.jpg,foo/1.jpg},你不会得到第三张图片,因为名称与第一张图片相匹配,还有比jpeg/jpg多得多的图片扩展名:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15593921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档