看进程是否死掉

using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;


namespace ConsoleApplication1
{
    class Program
    {
        public enum ProcessRespondingState
        {
            Responding,
            NotResponding,
            Unknown
        } 

        public static ProcessRespondingState IsProcessResponding(Process process)
        {
            if (process.MainWindowHandle == IntPtr.Zero)
            {
                Trace.WriteLine("{0} does not have a MainWindowHandle",
                    process.ProcessName);
                return ProcessRespondingState.Unknown;
            }
            else
            {
                // This process has a MainWindowHandle.
                if (!process.Responding)
                {
                    Trace.WriteLine("{0} is not responding.", process.ProcessName);
                    return ProcessRespondingState.NotResponding;
                }
                else
                {
                    Trace.WriteLine("{0} is responding.", process.ProcessName);
                    return ProcessRespondingState.Responding;
                }
            }
       }

        static void Main(string[] args)
        {
            ProcessRespondingState state;
            foreach (Process p in Process.GetProcesses())
            {
                state = IsProcessResponding(p);
                if (state == ProcessRespondingState.NotResponding)
                {
                    Console.WriteLine("{0} Process not responding", p.ProcessName);
                }
                if (state == ProcessRespondingState.Responding)
                {
                    Console.WriteLine("{0} process responding", p.ProcessName);
                }
                if (state == ProcessRespondingState.Unknown)
                {
                    Console.WriteLine("{0} process state unknown", p.ProcessName);
                }
            }
            Console.Read();
        }
    }
}

 

 

 

using System;
using System.Diagnostics;
namespace ProcessSample{
    class ProcessMonitorSample
    {
        public static void Main() {
            // Define variables to track the peak
            // memory usage of the process.
            long peakPagedMem = 0,
                peakWorkingSet = 0,
                peakVirtualMem = 0;
            Process myProcess = null;
            try {
                // Start the process.
                myProcess = Process.Start("NotePad.exe");
                // Display the process statistics until
                // the user closes the program.
                do { if (!myProcess.HasExited) {
                    // Refresh the current process property values.
                    myProcess.Refresh();
                    Console.WriteLine();
                    // Display current process statistics.
                    Console.WriteLine("{0} -", myProcess.ToString());
                    Console.WriteLine("-------------------------------------");
                    Console.WriteLine(" physical memory usage: {0}", myProcess.WorkingSet64);
                    Console.WriteLine(" base priority: {0}", myProcess.BasePriority);
                    Console.WriteLine(" priority class: {0}", myProcess.PriorityClass);
                    Console.WriteLine(" user processor time: {0}", myProcess.UserProcessorTime);
                    Console.WriteLine(" privileged processor time: {0}", myProcess.PrivilegedProcessorTime);
                    Console.WriteLine(" total processor time: {0}", myProcess.TotalProcessorTime);
                    Console.WriteLine(" PagedSystemMemorySize64: {0}", myProcess.PagedSystemMemorySize64);
                    Console.WriteLine(" PagedMemorySize64: {0}", myProcess.PagedMemorySize64);
                    // Update the values for the overall peak memory statistics.
                    peakPagedMem = myProcess.PeakPagedMemorySize64;
                    peakVirtualMem = myProcess.PeakVirtualMemorySize64;
                    peakWorkingSet = myProcess.PeakWorkingSet64;
                    if (myProcess.Responding)
                    { Console.WriteLine("Status = Running"); } else { Console.WriteLine("Status = Not Responding"); }
                }
                } while (!myProcess.WaitForExit(1000));
                Console.WriteLine();
                Console.WriteLine("Process exit code: {0}", myProcess.ExitCode);
                // Display peak memory statistics for the process.
                Console.WriteLine("Peak physical memory usage of the process: {0}", peakWorkingSet);
                Console.WriteLine("Peak paged memory usage of the process: {0}", peakPagedMem);
                Console.WriteLine("Peak virtual memory usage of the process: {0}", peakVirtualMem);
            } finally { if (myProcess != null) { myProcess.Close(); }
            }
        }
    }
}
 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值