私はHtmlAgilityPackを使用して、約200,000のHTMLドキュメントを解析しています。回避策StackOverflowException
私はこれらのドキュメントの内容を予測することはできませんが、そのようなドキュメントの1つはStackOverflowException
で失敗することになります。文書では、このHTMLが含まれています
<ol>
<li><li><li><li><li><li>...
</ol>
そのように入れ子におよそ万<li>
の要素があります。 HtmlAgilityPackがHTMLを解析する方法のために、StackOverflowException
が発生します。
残念ながら、StackOverflowExceptionは.NET 2.0以降ではキャッチできません。
私は、スレッドのスタックのサイズを大きく設定することに戸惑いましたが、大きなスタックサイズを設定するとハッキングになります。プログラムによって多くのメモリが使用されます(私のプログラムはHTML処理に約50スレッドを開始します。これらのスレッドはすべてスタックサイズが大きくなります)、同様の状況が発生した場合は手動で調整する必要があります。
他にも採用できる回避策はありますか?
ありません。別のライブラリに切り替える気がしない限り、スタックサイズを増やすよりも良い方法はありません。おそらく、それを必要とするスレッドのためだけにスタックサイズを設定する方法がありますか? –