多个WebClient,随着时间的推移,weclints停止工作

时间:2009-07-31 08:22:09

标签: c# webclient

第一次海报,长时间读者,所以请放轻松我:)

我正在编写一个应用程序,它可以读取一堆文件夹,并允许您为每个文件夹下载图像。有一个WebBrowser控件,您可以在其中浏览到特定图像,然后单击“将该图像用于所选文件夹”按钮。

每个“文件夹”都表示为具有自己的下载方法的对象,该方法在BackgroundWorker线程中使用WebClient。

当我在对象上设置图像网址时,它会启动该对象的背景工作并运行此代码

        using (WebClient client = new WebClient())
        {
            client.Proxy = null;
            Stream stream = client.OpenRead(BackdropUrl);
            Bitmap bitmap = new Bitmap(stream);
            stream.Flush();
            stream.Close();
            e.Result = bitmap;
        }

我还在我的应用程序主线程中使用webclient来做一些简单的html“抓取”。

现在,问题。当我开始使用该应用程序时,一切都很好,文件将在我浏览列表时下载,但过了一段时间,似乎网络客户端随机变得无法响应。我仍然可以在webbrowser控件中浏览,但是所有webclient执行代码似乎都没有完成它只挂在以下两行之一:

Stream stream = client.OpenRead(BackdropUrl);
Bitmap bitmap = new Bitmap(stream);

我知道这仍然很模糊,但我尽力解释它。有没有人可能有更强大的方法将图像直接下载到Bitmap对象?即不保存到文件然后再打开它?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

WebClient不支持用户指定的超时,(IIRC)的默认超时为100,000毫秒(100秒)。尝试等待> 100秒,看看是否有任何例外。

如果这是问题,您可能需要重构以在WebClient上使用HTTPWebRequest和HTTPWebResponse类,并配置更合理的超时。

答案 1 :(得分:0)

在发布的代码段中,您似乎没有处置您创建的BitMap个对象