我正在開發一個刮取一個網頁鏈接的刮板,然後創建執行 刮取子頁面的線程。WebClient.OpenRead異常:「值不能爲空。」
這是一個線程做什麼:
Dim client As New WebClient()
Dim stream As Stream = client.OpenRead(_Address)
Dim streamReader As New StreamReader(stream, True)
_Content = streamReader.ReadToEnd()
streamReader.Close()
streamReader.Dispose()
stream.Close()
stream.Dispose()
client.Dispose()
我注意到,有時(通常是因爲運行多個併發線程),一個線程拋出異常。它隨機發生,例外情況發生在client.OpenRead
,它說"Value cannot be null. Parameter name: address"
。我也有一個try..catch在這裏,所以我把一個斷點在catch塊,它似乎_Address
是有效的,但代碼拋出一個異常。
_Address
是一個受保護的類字段,不能被其他線程訪問。
的確切消息是:
「值不能爲空參數名:地址」。
例外是System.ArgumentNullException
。
堆棧跟蹤是:
在System.Net.WebClient.OpenRead(字符串地址)在MyAppName.Scraper.Scrape()在MyAppFolder \ Scraper.vb:行96
待辦事項你有任何建議來解決這個問題? 預先感謝您。
您是否在靜態(模塊/共享)類/方法中使用此代碼? – Oded 2010-09-23 13:31:40
發佈錯誤消息和stacktrace將是一個好主意。而且由於它是關於_Address,它從何而來? – 2010-09-23 13:36:10
@Oded不,公共類中的方法內的代碼。 – 2010-09-23 13:54:49