fork
残念ながら、 POSIX互換のオペレーティングシステムのCのように、C#ではできません。
いくつかのオプションがあります。無限ループから保護することだけを目的としているので、新しいものThread
(1つまたは1つではなく、新しいもの)を生成することができます。次に、スレッドを強制終了する必要がある場合は、スレッドを呼び出すことができます。これにより、他のスレッドでがトリガーされます。ThreadPool
Task
Abort
ThreadAbortException
他のオプションはAppDomain
です。現在実行中のアセンブリを使用して、比較的簡単に新しいものを作成できます。AppDomain
次に、ドメイン全体に実際に存在するプロキシオブジェクトを呼び出します。プロキシは、旧式の.NETリモーティングを使用して、実際のオブジェクトのメソッドを呼び出します(.NET 1.1ベースの構造に制限されているため、ジェネリックパスなどはありません)。
上記の戦略のいずれも、アンマネージコードのクラッシュからユーザーを保護するものではないことに注意してください。AppDomainはマネージ構造であるため、アンマネージハングアップを中止するために使用することはできません。
2番目のOSレベルのプロセスを取得することを本当に、本当に、本当に決心している場合は、一時ファイルに新しい実行可能アセンブリをその場で生成し、それを新しいプロセスで開始することもできます。新しいアセンブリの生成に関するMSDNの記事については、こちらを参照してください。これは決して些細なことではないことに注意してください。