【发布时间】:2022-01-18 08:31:39
【问题描述】:
我正在使用 HtmlAgilityPack 解析大约 200,000 个 HTML 文档。
我无法预测这些文档的内容,但是一个这样的文档会导致我的应用程序失败并返回 StackOverflowException。该文档包含以下 HTML:
<ol>
<li><li><li><li><li><li>...
</ol>
大约有 10,000 个 <li> 元素像这样嵌套。由于 HtmlAgilityPack 解析 HTML 的方式,它会导致 StackOverflowException。
很遗憾,在 .NET 2.0 及更高版本中无法捕获 StackOverflowException。
我确实想知道为线程的堆栈设置更大的大小,但是设置更大的堆栈大小是一种技巧:它会导致我的程序使用更多的内存(我的程序启动了大约 50 个线程来处理 HTML,所以所有这些线程的堆栈大小会增加),如果再次遇到类似情况,则需要手动调整。
还有其他我可以采用的解决方法吗?
【问题讨论】:
-
并非如此。除非您想切换到不同的库,否则我认为没有比增加堆栈大小更好的方法了。也许有一种方法可以仅为需要它的线程设置堆栈大小?
标签: html-agility-pack stack-overflow