2010-11-20 11 views
1

私は、スクリプト作成のためにユーザーがプラグイン(アセンブリ)をサイトにアップロードする方法を提供したいと考えています。 mono.cecilを通して、私はこれらのアセンブリを分析し、あらかじめ定義された関数のリストだけにアクセスを制限することができますが、メモリの使用、実行時間を制限し、.Net/monoのスレッドのメモリ使用量と実行時間を制御する方法は?

私はプロファイラAPIによってメモリ使用量を監視できますが、私が知っているように、保証付きスレッドを中止するツールはありません。保証付きスレッドを中止する方法はありますか?おそらく、私はモノを埋め込んでコードを実行し、アプリケーションのネイティブ部分でスレッドの実行を制御する必要がありますか?

答えて

1

プラグインコードでResetAbort()を許可しない限り、Thread.Abort()を使用できます。

+0

スレッドがfinallyブロックでスタックした場合、ResetAbort()を使用しなくてもスレッドを中断できないため、解決策ではありません。 – rystsov

0

スレッドレベルの制御は実用的ではありませんでした(誰でも過去にそれをしました)。通常、メモリ使用量またはアプリケーションドメインレベルのプロセスレベル制御を考慮する必要があります。

+0

ありがとうございますが、msdn(http://msdn.microsoft.com/en-us/library/system.appdomain.unload.aspx)によれば、AppDomain.Unloadを呼び出すと、ドメインのスレッドを中止しようとします。この試行が失敗した場合ドメインはアンロードされません。 – rystsov

+0

プロセスレベルの制御は、実行可能な唯一の選択肢と思われます。 IE/Chromeがウェブページのハングを避けるためにこのアプローチを使用する理由は不思議ではありません。 –

関連する問題