Silverlightアプリケーションで任意のユーザーコードを実行したいと考えています。もちろん、チューリング完全言語を埋め込みたいですが、悪い(終端でない)コードを書くと、ユーザーがブラウザをロックすることを許可したくありません。私はHalting Problemを解決するように求めていません。バックグラウンドスレッドでこのユーザーコードを実行し、ボタンを押すだけで終了できます。Silverlightで解釈されるユーザーコードの割り込み
私がしたい場合でもSilverlightでThread.Abortを使用することはできません。どうすればバックグラウンドインタープリタスレッドを中断できますか?
私の現在の考え方:
- 私は手でいくつかの言語を解釈する場合は、もちろん私は
- をしたいとき、私はReflection.Emitを使用するか、または式ツリーをコンパイルし、同様のチェックを挿入することができ、実行を停止することができます早期終了に
- を行うには、この実行するコードを生成するために、既存のコンパイラを変更します(多分F#やIronPythonのを?)既存のツールで生成
- 後処理IL(このルールを出していDLRベースの言語を?)
もっと簡単な解決策があるとは思えません。
この質問は、あなたのようになります:はい、スレッドを停止させる意味でhttp://stackoverflow.com/questions/472431/unable-to-kill-a-worker-thread-in-silverlight –
、この「もちろん、私が欲しいときに実行を止めることができる」という意味です。私は、DLRベースの言語には、それを殺すのに使うことができる機能を持っていることを望んでいたと思っていました。そうでなければ、すばらしい組み込み可能な言語のILをmanglingする良いオプションがあります。 –