반응형
처리중인 AppDomain 나열
Process 내에서 AppDomain을 열거하는 방법이 있습니까?
이 게시물 을보고 싶을 수 있습니다.
using System.Runtime.InteropServices;
// Add the following as a COM reference - C:\WINDOWS\Microsoft.NET\Framework\vXXXXXX\mscoree.tlb
using mscoree;
public static IList<AppDomain> GetAppDomains()
{
IList<AppDomain> _IList = new List<AppDomain>();
IntPtr enumHandle = IntPtr.Zero
CorRuntimeHostClass host = new mscoree.CorRuntimeHostClass();
try
{
host.EnumDomains(out enumHandle);
object domain = null;
while (true)
{
host.NextDomain(enumHandle, out domain);
if (domain == null) break;
AppDomain appDomain = (AppDomain)domain;
_IList.Add(appDomain);
}
return _IList;
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
return null;
}
finally
{
host.CloseEnum(enumHandle);
Marshal.ReleaseComObject(host);
}
}
}
나는 이것을 다음과 같이 다듬는 다.
using System.Runtime.InteropServices;
using mscoree;
public static IEnumerable<AppDomain> EnumAppDomains()
{
IntPtr enumHandle = IntPtr.Zero;
ICorRuntimeHost host = null;
try
{
host = new CorRuntimeHostClass();
host.EnumDomains(out enumHandle);
object domain = null;
host.NextDomain(enumHandle, out domain);
while (domain != null)
{
yield return (AppDomain)domain;
host.NextDomain(enumHandle, out domain);
}
}
finally
{
if (host != null)
{
if (enumHandle != IntPtr.Zero)
{
host.CloseEnum(enumHandle);
}
Marshal.ReleaseComObject(host);
}
}
}
이것을 다음과 같이 부르십시오.
foreach (AppDomain appDomain in EnumAppDomains())
{
// use appDomain
}
COM 개체 \ WINDOWS \ Microsoft.NET \ Framework \ vXXX \ mscoree.tlb를 참조하고 참조 mscoree "Embed Interop Types"를 "False"로 설정해야합니다.
참조 URL : https://stackoverflow.com/questions/388554/list-appdomains-in-process
반응형
'Programing' 카테고리의 다른 글
Windows 상자에서 Python PIP를 업데이트하는 방법에 대한 아이디어가 있습니까? (0) | 2021.01.05 |
---|---|
LINQ + Foreach 대 Foreach + If (0) | 2021.01.05 |
개행 문자를 사용할 수 있는데 왜 endl을 사용합니까? (0) | 2020.12.31 |
(Python) 라이브러리를 설치하는 대신 로컬로 사용 (0) | 2020.12.31 |
할당이 마지막 작업 인 경우에도 최종 변수를 catch에서 다시 할당 할 수 있습니까? (0) | 2020.12.31 |