Исключение безопасности с Thread.Abort - PullRequest
2 голосов
/ 29 августа 2011

Когда я звоню Thread.Abort, я получаю следующее исключение:

Запрос разрешения типа 'System.Security.Permissions.SecurityPermission, mscorlib, Version = 2.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089 'не удалось.

Почему это происходит?

1 Ответ

2 голосов
/ 29 августа 2011

Вызов Thread.Abort требует разрешения CAS (защита доступа к коду) SecurityPermission \ ControlThread.Это не имеет ничего общего с разрешениями пользователя, а скорее с разрешениями, предоставленными вашему коду .NET CLR.

Разрешение ControlThread считается «опасным» разрешением.По умолчанию в .NET 2.0 он предоставляется только сборкам, работающим локально на компьютере.Я предполагаю, что ваша сборка либо загружается извне локальной машины, либо выполняется в размещенном экземпляре CLR (например, ASP.NET).В любом случае, существуют механизмы для увеличения разрешений CAS вашей сборки.Если вам нужна помощь в этом, вам нужно будет более точно определить, как загружается ваша сборка.

При этом прерывание потоков с использованием Thread.Abort обычно не рекомендуется .Возможно, вы захотите инвестировать в альтернативный подход для остановки выполнения потока вместо того, чтобы тратить время на попытки избежать исключения SecurityException.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...