.NETの信頼性機能に関するこの記事(およびその他)を読んだことで、次のコードがStackOverflowExceptionsを処理する必要があると思います。
class Program
{
private static int s_exitCode = -1;
static int Main(string[] args)
{
RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(DoStuff, Cleanup, null);
return s_exitCode;
}
[MethodImpl(MethodImplOptions.NoInlining)]
static void DoStuff(object userdata)
{
DoStuff(userdata);
}
[MethodImpl(MethodImplOptions.NoInlining)]
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
static void Cleanup(object userData, bool exceptionThrown)
{
s_exitCode = 0;
}
}
上記のコードをコンソールアプリケーションに配置し、アプリの構成ファイルに次のエントリも含めました。
<runtime>
<legacyUnhandledExceptionPolicy enabled="1" />
</runtime>
別のアプリケーションからのProcess.Start()呼び出しを介して開始します。ただし、これらすべてにもかかわらず、プロセスがクラッシュし、-2147023895の終了コードが返されます。そして、多くの研究といじくり回しにもかかわらず、私はこれを機能させる方法を見つけることに近づいていません。
どんなアドバイスもありがたく受けました、ありがとう。
クリス。