跟踪流程的最佳方法

本文关键字:最佳 方法 跟踪 | 更新日期: 2023-09-27 18:23:45

在我的咨询公司,我们使用一些非常昂贵的模拟软件。我需要一种方法来监控这些应用程序/进程的使用情况(在后台,使用C#)。其想法是,当某人运行特定的应用程序时,系统会提示他们输入作业名称。然后,当他们关闭程序时,他们使用程序的时间会被发送到网络上的数据库。通过这种方式,我们可以通过向客户收取$/min的费用来收回软件的成本。除了提示之外,用户必须几乎看不到该程序。

我想了几种方法来做到这一点,但我不确定什么是最好的:

  1. 有一个在启动时运行的程序,只有一个托盘图标。我想那时我必须有一个后台工作人员持续监控进程,也许是让线程休眠,大约每5分钟检查一次进程

  2. 在启动时使用类似Quartz.net的东西,并带有托盘图标。如果这在每分钟的基础上适用的话。我对Quartz.net不是很熟悉,但从我的研究来看,它可能可行。

  3. 使用某种Windows服务。这个我最不熟悉。

哪种方法最有成效?感谢

跟踪流程的最佳方法

您可以编写一个简单的C#程序,在执行时收集所需的信息和启动时间。

然后使用Process类执行模拟软件。使用WaitForExit()等待进程结束,并根据执行时间等做任何需要的事情。

因此,从本质上讲,您最终得到的应用程序只是收集所需的信息,启动主应用程序,等待应用程序结束,并在总执行时间内完成所需的一切。就用户不可见而言,您可以在等待应用程序结束时最小化主窗口(它也充当收集所需信息的表单)。

下面是一个在C#中启动可执行文件的小示例。

private void LaunchApp()
    {
        Process proc = new Process();
        /* we are going to assume wordpad is installed on workstation */
        /* collect needed info and time */

        proc.StartInfo.FileName = "Wordpad.exe";
        proc.StartInfo.Arguments = "SomeFile.txt";
        proc.Start();
        proc.WaitForExit();

        /* App has ended. Now process execution time etc. */
    }