Example #1
0
        /// <摘要>
        /// 显示指定进程中的应用程序域
        /// </摘要>
        /// <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();
                }
            }
        }