2

当我打电话时,Thread.Abort我收到以下异常:

请求“System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限失败。

为什么会这样?

4

1 回答 1

2

调用 Thread.Abort 需要 CAS(代码访问安全)权限 SecurityPermission\ControlThread。这与用户的权限无关,而是与 .NET CLR 授予您的代码的权限有关。

ControlThread 权限被视为“危险”权限。默认情况下,在 .NET 2.0 中,它只授予在机器上本地运行的程序集。我猜您的程序集要么是从本地机器外部加载的,要么是在托管的 CLR 实例(例如 ASP.NET)中运行的。无论哪种方式,都有适当的机制来增加程序集的 CAS 权限。如果您需要这方面的帮助,您将需要更具体地了解您的程序集是如何加载的。

也就是说,通常不建议使用 Thread.Abort 中止线程。您可能需要考虑投资一种替代方法来停止线程执行,而不是花时间试图避免 SecurityException。

于 2011-08-29T12:20:09.843 回答