2009-07-31 52 views
3

首次海報,很長一段時間的讀者,所以你要對我:)容易多個Web客戶,隨着時間的推移weclints停止工作

我正在寫讀一堆文件夾,並允許您下載的應用程序每個文件夾的圖像。有一個WebBrowser控件,您可以在其中瀏覽特定圖像,然後單擊一個按鈕「將此圖像用於所選文件夾」。

每個「文件夾」都表示爲具有自己的下載方法的對象,該方法使用BackgroundWorker線程內的WebClient。

當我在對象上設置圖像的URL,它啓動對象的BackgroundWorker並運行該代碼

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

我也使用Web客戶端在我的應用程序的主線程做一些簡單的HTML「刮痧」 。

現在,解決問題。當我開始使用該應用程序時,一切都很好,這些文件將在我瀏覽列表時下載,但過了一段時間,似乎Web客戶端隨機變得無響應。我仍然可以瀏覽周圍WebBrowser控件,但所有的Web客戶端執行代碼,似乎無法完成它只是掛在這兩行之一:

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

我知道這仍然是相當模糊的,但我試圖解釋盡我所能。有沒有人可能有更強大的方式將圖像直接下載到Bitmap對象中?即不保存到文件然後再打開它?

任何幫助將不勝感激。

+0

如果您使用相同的WebClient而不是爲每個文件創建一個新的WebClient,您是否也有同樣的問題? – 2009-07-31 08:25:44

回答

0

在發佈的代碼片段中,你似乎沒有被處置的BitMap對象的創建

1

Web客戶端不支持用戶指定的超時,和(IIRC)具有100,000毫秒默認的超時(100秒)。試着等待> 100秒,看看你是否有任何例外。

如果這是問題,您可能需要重構以在WebClient上使用HTTPWebRequest和HTTPWebResponse類,並配置更合理的超時。

相關問題