您的位置:首页 > 移动开发

.net 获取AppDomain创建了多少

2014-12-16 18:01 197 查看
partial class HttpBrowser
{
public static string IsolateCall(PageContentHandler pHandler)
{
Contract.Requires(pHandler != null);

string name = Guid.NewGuid().ToString("N");
var box = SandboxManager.Create(name, true);
try
{
string entryType = "AnfleCrawler.Common.IsolatedBrowser, AnfleCrawler.Common";
#if DEBUG
App.LogInfo("IsolateCall EntryType:{0}", entryType);
#endif
//string ret = (string)box.Execute(entryType, pHandler);
string ret = (string)box.Execute(entryType, "xCross", new object[] { pHandler });
if (ret == null)
{
throw new InvalidOperationException(string.Format("IsolatedBrowser {0}", entryType));
}
return ret;
}
finally
{
SandboxManager.Unload(box);
#if DEBUG
App.LogInfo("IsolateCall Domains:{0}", string.Join("#", GetAppDomains().Select(p => p.FriendlyName)));
#endif
}
}

private static IEnumerable<AppDomain> GetAppDomains()
{
var list = new List<AppDomain>();
IntPtr enumHandle = IntPtr.Zero;
var host = new mscoree.CorRuntimeHostClass();
try
{
host.EnumDomains(out enumHandle);
object domain = null;
while (true)
{
host.NextDomain(enumHandle, out domain);
if (domain == null)
{
break;
}
var appDomain = (AppDomain)domain;
list.Add(appDomain);
}
return list;
}
finally
{
host.CloseEnum(enumHandle);
System.Runtime.InteropServices.Marshal.ReleaseComObject(host);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: