2011-02-02 3 views
3

System.Threading.CompressedStackの実用的な使い方を見つけようとしています。何かクールではなく、「ああ、スタックを別のスレッドから別のスレッドに移動することができます」というのではなく、実際にそのようなことをしたいときや、この楽しい小さなクラスでできることがあれば。System.Threading.CompressedStackのユースケースは何ですか

+0

スタックではなく、セキュリティコンテキスト。メソッドコールを別のスレッドにマーシャリングするときに使用され、検証されるようにします。あなた自身は何もしません。 –

答えて

3

これは実際にフレームワークによる内部使用のために設計されています。 documentation

CompressedStackクラスは、SecurityContextクラスによって内部的に使用されます。たとえば、SecurityContext.Captureメソッドは、偽装やカルチャ情報とともに、現在の呼び出しスタックの圧縮スタックを取得します。 SecurityContextクラスは、ExecutionContextクラスによって順番に使用され、スレッドプールタスクのスケジューリングなど、スレッド間でコンテキストを処理します。

このクラスは、通常のアプリケーションプログラミングでは使用されません。ストレートから

+0

リンクが再び機能します。だから、なぜMicrosoftは内部にそれをマークしていないのですか?私は、確かにそれを公開したままにする理由があることを意味します。前述の以外にあなたが使用することができるものについての考えはありますか?ちょっと興味があるんだけど。 –

+0

@JNZ:内部は単一のアセンブリの内部です。私はMSが複数のアセンブリでこれを使用していると思われますが、そうでなければ役に立つ可能性があるいくつかの非常に奇妙なエッジケースがあります... –

4

documentation

"このクラスは、通常のアプリケーションのプログラミングで使用されていません。"

私はそれが特別なアプリケーションプログラミングのためだと思います。

1

プラグインとサンドボックスを作成するときに非常に便利なクラスです。ホストのCASコンテキスト(CompressedStack.Capture)を取得し、プラグインが信頼できるホストメソッド(CompressedStack.Run)を呼び出すと、ホスト実行コンテキストで「実行を再開」することができます。

それ以外の場合、信頼できるホストメソッドは信頼できないコードとして実行され、CASで保護されたリソースにアクセスしようとすると、複数のSecurityExceptionsが実行されます。

関連する問題