2016-08-10 11 views
1

私はスクリプトのタイムアウトの仕組みをRoslynを通して実行したいので、スクリプトの実行を中止する方法が必要です。今まで私が見つけた唯一の解決策は、スレッド内でスクリプトを実行して終了させることですが、明らかに欠陥のある解決策です。roslynスクリプトの実行を中止する

これを行うより良い方法はありますか?

+0

スクリプトが協力してくれますか? – svick

+0

ほとんどの場合はyesですが、スクリプトはサーバー上で実行されるため、記述の悪いスクリプトに対する保護をしたいと思います。誰かが偶然に無限ループを書いたので、私はアプリケーションがハングしないようにしたい。 –

答えて

3

別のプロセスを起動して代わりにそのプロセスを終了すること以外は(標準的な落とし穴であるThread.Abort()を避けるため)、これが最善の方法です。スクリプトコードが多かれ少なかれ恣意的になる可能性があるので、本当に良い選択肢はありません。スクリプトにはThread.Sleep(Timeout.Infinite)を実行するだけで、スクリプトエンジンがそれを回復することはできません。

関連する問題