gpt4 book ai didi

c# - 防止在 AppDomain 中创建线程

转载 作者:太空狗 更新时间:2023-10-29 21:55:19 26 4
gpt4 key购买 nike

我已经建立了一个小例子,我在没有任何许可的情况下将一个程序集加载到一个新的 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<StrongName>(); 也不适合我。

希望s/o能帮上忙。 (:

最佳答案

这似乎没有简单的答案。您可以做的是使用 .NET Profiling API 来尝试监视 AppDomain 中的内存使用情况。您可以在这里找到更多相关信息,但您需要进行一些挖掘:http://msdn.microsoft.com/en-us/library/bb384493.aspx

无论如何,在具有较低优先级的单独进程中运行任何你想运行的东西不是更好吗,所以如果内存分配变得疯狂,它不会影响你的进程,操作系统会杀死它并且它不影响你的主进程?

关于c# - 防止在 AppDomain 中创建线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8644336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com