[問題] Webbrowser 記憶體不足

作者: songla1204 (TTP)   2015-05-02 15:56:21
大家好
我正在開發一個網路爬蟲
能夠一個一個進去google搜尋出來的結果網址
把網頁的原始碼抓下來分析
我的程式碼大概如下
WebBrowser webBrowser = new WebBrowser();
while(1)
{
webBrowser.Navigate(_Url);
while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();
string result = webBrowser.DocumentText;
.......
}
一直不斷重複while(1)裡面的事情(Google的結果很多)
但跑了一段時間
便會發生以下的狀況
http://imgur.com/m15vYvi
意思應該是webbrowser這個元件的記憶體被塞滿了
請問有沒有辦法讓我將webbrowser的記憶體清空呢?
謝謝大家
作者: johnpage (johnpage)   2015-05-03 00:30:00
加入搜尋深度
作者: songla1204 (TTP)   2015-05-03 00:54:00
不太懂 請問是什麼意思?
作者: Litfal (Litfal)   2015-05-03 13:39:00
不是有事件通知嗎...為何要用輪詢檢查
作者: TobyH4cker (Toby (我要當好人))   2015-05-04 16:17:00
你有出迴圈嗎?
作者: songla1204 (TTP)   2015-05-04 17:30:00
有出迴圈
作者: pkmu8426 (巴426)   2015-05-04 21:32:00
設個條件, run幾次以後讓物件重新產生 或為空呢?如果你是用textbox 也要考慮這些元件承受長度的能力建議時時清暫存, 將撈回的資料寫到txt之類的data有需要再撈出做處理。(除非你是要一次做全部統計)再沒辦法就朝垃圾回收(GC)看看有沒解吧
作者: songla1204 (TTP)   2015-05-04 23:57:00
請問要怎麼讓Webbrowser物件為空呢?我用webbrowser.dispose()釋放資源後那個browser就不能用了 有辦法讓他reset嗎?
作者: Litfal (Litfal)   2015-05-05 01:15:00
重新new,不過我更推薦整個程式restart (帶參數執行自己,然後把自己關掉)不過這是最後一招,你應該先研究DocumentCompleted事件...
作者: songla1204 (TTP)   2015-05-06 16:18:00
好的 我研究看看 謝謝您

Links booklink

Contact Us: admin [ a t ] ucptt.com