C# 进程终止通知

标签 c# events process exit terminate

我目前正在寻找一种在特定进程关闭时删除特定文件的方法。我发现了很多创建进程和为 exited 添加事件处理程序的示例,但我需要获得系统中所有进程的通知,而不仅仅是我创建的进程。

谁能阐明这是如何实现的?

最佳答案

我对您的问题很感兴趣,所以我为此编写了一个小应用程序,希望您觉得它有用。可以在很多方面进行改进:)​​

class Program
{
    private static readonly List<Process> AllProcesses = new List<Process>();

    static void Main(string[] args)
    {
        var timer = new Timer(1000);
        timer.AutoReset = true;
        timer.Elapsed += (sender, eventArgs) =>
        {
            Process[] processSnapShot = Process.GetProcesses();
            var newProcesses = processSnapShot.Where(p => !AllProcesses.Select(p2 => p2.Id).Contains(p.Id));

            WireHandler(newProcesses);

            AllProcesses.AddRange(newProcesses);
        };

        var processes = Process.GetProcesses();
        WireHandler(processes);

        timer.Start();
        Console.ReadLine();
    }

    private static void WireHandler(IEnumerable<Process> processes)
    {
        foreach (var process in processes)
        {
            try
            {
                Console.WriteLine("Process started " + process.ProcessName);
                process.EnableRaisingEvents = true;
                process.Exited += ProcessOnExited;
            }
            catch (Exception e)
            {
                Console.WriteLine("Error occurred " + e.Message);
            }
        }
    }

    private static void ProcessOnExited(object sender, EventArgs eventArgs)
    {
        var process = (Process) sender;
        AllProcesses.Remove(process);

        Console.WriteLine("Process exited " + process.ProcessName);
    }
}

关于C# 进程终止通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30770128/

相关文章:

c# - 使用 Visual C++ 创建的 WinRT DLL 无法在 Windows 应用商店应用程序中加载

c# - 即使发生未处理的异常,也要保持应用程序运行

c# - 检查事件是否注册

android - Kotlin : On camera move end

windows - 为什么 CGIHTTPServer 在 Windows 中这么慢?

node.js - NodeJS : Make it possible for user input when running child_process

Bash:重定向已经运行的进程的输出?

c# - 使用 AES 解密少量字节

c# - 如何从 Azure AD 获取用户属性

excel - 如果字符计数器大于 100,则更改字体大小的事件