/// <摘要> /// 显示指定进程中的应用程序域 /// </摘要> /// <param name="pid"> 参数进程ID</param> static void ShowAppDomains(int pid) { if (pid <= 0) { throw new ArgumentException("请输入有效指令。"); } ManagedProcess process = null; try { // GetManagedProcessByID是托管进程类的一个静态方法 // 此方法是用来获得一个托管进程类的实例。 // 如果不存在相应PID的托管进程,将会抛出ArgumentException异常。 process = ManagedProcess.GetManagedProcessByID(pid); foreach (CorAppDomain appDomain in process.AppDomains) { Console.WriteLine("应用程序域 Id={0}, 名称={1}", appDomain.Id, appDomain.Name); } } catch (ArgumentException _argumentException) { Console.WriteLine(_argumentException.Message); } catch (ApplicationException _applicationException) { Console.WriteLine(_applicationException.Message); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.GetType()); Console.WriteLine(ex.StackTrace); Console.WriteLine("不能获得该进程。" + " 确保该进程存在,并且是托管进程。"); } finally { if (process != null) { process.Dispose(); } } }
/// <summary> /// Show AppDomains in a specified process. /// </summary> /// <param name="pid"> The ID of the Process.</param> static void ShowAppDomains(int pid) { if (pid <= 0) { throw new ArgumentException("Please type a valid PID."); } ManagedProcess process = null; try { // GetManagedProcessByID is a static method of the class ManagedProcess. // This method is used to get an instance of ManagedProcessInfo. If there is // no managed process with this PID, an ArgumentException will be thrown. process = ManagedProcess.GetManagedProcessByID(pid); foreach (CorAppDomain appDomain in process.AppDomains) { Console.WriteLine("AppDomain Id={0}, Name={1}", appDomain.Id, appDomain.Name); } } catch (ArgumentException _argumentException) { Console.WriteLine(_argumentException.Message); } catch (ApplicationException _applicationException) { Console.WriteLine(_applicationException.Message); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.GetType()); Console.WriteLine(ex.StackTrace); Console.WriteLine("Cannot get the process. " + " Make sure the process exists and it's a managed process"); } finally { if (process != null) { process.Dispose(); } } }