System.Threading.CompressedStack的用例是什么?

3

我正在寻找System.Threading.CompressedStack的实际用途。一些很酷的东西,而不是“哦,我们可以为了好玩将堆栈从一个线程移动到另一个线程”,而是当人们真正想要这样做或使用这个有趣的小类进行其他操作时。


不是堆栈,而是安全上下文。这样在将方法调用封送到另一个线程时,可以使用和验证它。这不是你自己要做的事情。 - Hans Passant
3个回答

5
直接从文档中翻译而来:
“这个类在普通应用程序编程中不会被使用。”
我猜它只用于非凡的应用程序编程。

3

这个类是专为框架的内部使用而设计的。根据文档

CompressedStack 类被 SecurityContext 类在内部使用。例如,SecurityContext.Capture 方法会捕获当前调用堆栈的压缩堆栈,以及模拟和文化信息。ExecutionContext 类反过来又使用 SecurityContext 类来在线程之间流动上下文,例如在调度线程池任务时。

此类不在普通应用程序编程中使用。


链接又可以使用了。所以问题是...为什么微软没有将它标记为内部的?我的意思是,肯定有留下它为公开的原因。你有除了上述提到的之外可能用它做什么的想法吗?只是好奇。 - Michael J. Gray
@JNZ:Internal是指单个程序集内部的。我猜微软公司在多个程序集中使用它,而且可能存在一些非常奇怪的边缘情况,在这些情况下它可能会有用... - Reed Copsey

1
这是在创建插件和沙盒时非常有用的类。可以捕获主机的CAS上下文(CompressedStack.Capture),然后当插件回调受信任的主机方法(CompressedStack.Run)时,允许在主机执行上下文下“恢复执行”。
否则,“受信任”的主机方法将作为不受信任的代码执行,并在尝试访问CAS受保护的资源时遇到多个SecurityExceptions。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接