我正试图找到System.Threading.CompressedStack
的实际用途。有点酷,不是“哦,我们可以将堆栈从一个线程移动到另一个线程以获得乐趣”,而是当一个人真的想要这样做或者其他任何你可以用这个有趣的小班做的事情时。
答案 0 :(得分:5)
答案 1 :(得分:3)
这实际上是为框架内部使用而设计的。来自documentation:
CompressedStack类由SecurityContext类在内部使用。例如,SecurityContext.Capture方法捕获当前调用堆栈的压缩堆栈以及模拟和文化信息。 SecurityContext类依次由ExecutionContext类用于跨线程流动上下文,例如在调度线程池任务时。
此类不用于普通的应用程序编程。
答案 2 :(得分:1)
创建插件和沙箱时,这是一个非常有用的类。可以捕获主机的CAS上下文(CompressedStack.Capture),然后当插件调用回来时,可信主机方法(CompressedStack.Run)允许"恢复执行"在主机执行上下文中。
否则"信任" host方法将作为不受信任的代码执行,并在尝试访问受CAS保护的资源时将遇到多个SecurityExceptions。