我使用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,所以所有这些线程都会增加堆栈大小),并且如果它再次遇到类似情况,则需要手动调整。
有没有其他解决方法可以使用?
不是真的。除非您想切换到不同的库,否则我看不到增加堆栈大小的更好方法。也许有一种方法只为需要的线程设置堆栈大小? –