2013-07-05 36 views
1

這個簡單的代碼從多行文本框中獲取行,將每個url頁面下載爲一個字符串,並調用另一個函數來解析該字符串中的信息。 client.DownloadString(url)只是掛在第二個url的下載嘗試。爲什麼我無法獲得任何反饋。有一次它實際上經歷了他們。我不應該需要使用此方法的異步版本。爲什麼它在第一個url上工作,但不是第二個?不管網址是什麼,它幾乎總是掛在第二個網址上。WebClient.DownloadString(url)掛在第二個url上

string[] lines = tbUrls.Text.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); 

      for (int i = 0; i < lines.Count(); i++) 
      { 
       try 
       { 
        WebClient client = new WebClient(); 
        string url = lines[i]; 
        string downloadString = client.DownloadString(url); 

        findNewListings(downloadString, url); 
       } 
       catch (Exception exce) 
       { 
        MessageBox.Show("Error downlaoding page: \n\n" + exce.Message); 
       } 

      } 
+0

不確定,但是因爲'WebClient'的基類'Component'實現了'IDisposable',所以也許你應該把它封裝在一個using(...)中,以便它在循環的每次迭代中清理完畢。 –

+0

您是否嘗試跳過第二個網址?所有其他人都很好,或者每個網址都掛在第二個位置? – Shaharyar

回答

2

我編輯的代碼,試試這個:

WebClient client = new WebClient(); 
string url = lines[i]; 
try 
{ 
    string downloadString = client.DownloadString(url); 
    client.Dispose(); //dispose the object because you don't need it anynmore 
    findNewListings(downloadString, url); 
} 
catch (Exception exce) 
{ 
    MessageBox.Show("Error downlaoding page: \n\n" + exce.Message); 
} 

如果對象是不再使用,它​​能夠更好地Dispose它。

+0

似乎現在工作。非常感謝。 – user2514676

相關問題