跟踪流程的最佳方法
本文关键字:最佳 方法 跟踪 | 更新日期: 2023-09-27 18:23:45
在我的咨询公司,我们使用一些非常昂贵的模拟软件。我需要一种方法来监控这些应用程序/进程的使用情况(在后台,使用C#)。其想法是,当某人运行特定的应用程序时,系统会提示他们输入作业名称。然后,当他们关闭程序时,他们使用程序的时间会被发送到网络上的数据库。通过这种方式,我们可以通过向客户收取$/min的费用来收回软件的成本。除了提示之外,用户必须几乎看不到该程序。
我想了几种方法来做到这一点,但我不确定什么是最好的:
-
有一个在启动时运行的程序,只有一个托盘图标。我想那时我必须有一个后台工作人员持续监控进程,也许是让线程休眠,大约每5分钟检查一次进程
-
在启动时使用类似Quartz.net的东西,并带有托盘图标。如果这在每分钟的基础上适用的话。我对Quartz.net不是很熟悉,但从我的研究来看,它可能可行。
-
使用某种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. */
}