我使用HtmlAgilityPack來解析大約200,000個HTML文檔。解決方法StackOverflowException
我無法預測這些文檔的內容,但是一個這樣的文檔導致我的應用程序失敗,出現StackOverflowException
。該文檔包含以下HTML:
<ol>
<li><li><li><li><li><li>...
</ol>
大致有10,000個<li>
這樣的嵌套元素。由於HtmlAgilityPack解析HTML的方式,導致StackOverflowException
。
不幸的是,StackOverflowException在.NET 2.0及更高版本中不可捕捉。我想知道爲線程的堆棧設置一個更大的大小,但是設置一個更大的堆棧大小是一個駭客:它會導致我的程序使用更多的內存(我的程序啓動大約50個線程來處理HTML,所以所有這些線程都會增加堆棧大小),並且如果它再次遇到類似情況,則需要手動調整。
有沒有其他解決方法可以使用?
不是真的。除非您想切換到不同的庫,否則我看不到增加堆棧大小的更好方法。也許有一種方法只爲需要的線程設置堆棧大小? –