Запретить создание потоков в AppDomain

Я создал небольшой пример, в котором я загружал сборку в новый домен приложения без каких-либо разрешений. Это работает нормально, сборка не может получить доступ к файловой системе и не может прослушивать сокеты.

Но есть еще одна вещь, которую я хочу предотвратить: создание потоков.Почему? Потому что теоретически эта сборка может создать поток, который создает еще больше потоков и наводняет мою память.

Я придумал (на мой взгляд) лучший способ: ограничить память AppDomain. Это возможно? А если нет, что я могу сделать, чтобы избежать создания потока?

Использовал этот код для создания потока

Thread t = new Thread(this.DoWork);
t.Start();

И этот код для AppDomain

 PermissionSet set = new PermissionSet(PermissionState.None);
 set.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
 set.AddPermission(new FileIOPermission(FileIOPermissionAccess.Read |
                                        FileIOPermissionAccess.PathDiscovery, 
                                        this.path));

 AppDomainSetup info = new AppDomainSetup { ApplicationBase = this.path };

 this.domain = AppDomain.CreateDomain("Sandbox", null, info, set, null);  

(Хорошо, я дал доступ к файловой системе в папке, где я хочу загрузить сборку, потому что StrongName fullTrustAssembly = typeof (SecureInstance) .Assembly.Evidence.GetHostEvidence (); у меня тоже не работает.

Hope s / o может помочь. (:

6
задан Yahia 27 December 2011 в 12:13
поделиться