Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 跟踪过程的最佳方法_C#_.net_Backgroundworker_Process - Fatal编程技术网

C# 跟踪过程的最佳方法

C# 跟踪过程的最佳方法,c#,.net,backgroundworker,process,C#,.net,Backgroundworker,Process,在我的咨询公司,我们使用一些非常昂贵的模拟软件。我需要一种在后台使用C监控这些应用程序/进程使用情况的方法。其思想是,当某人运行特定应用程序时,会提示他们输入作业名称。然后,当他们关闭程序时,他们使用该程序的时间量被发送到驻留在网络上的数据库。通过这种方式,我们可以通过以美元/分钟的价格向客户收取费用来收回软件成本。除了提示之外,程序必须对用户几乎不可见 我已经想到了几种方法,但我不确定什么是最好的: 有一个启动时运行的程序,只有一个托盘图标。我想我必须让一个后台工作人员持续监控进程,也许让线程

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

我已经想到了几种方法,但我不确定什么是最好的:

有一个启动时运行的程序,只有一个托盘图标。我想我必须让一个后台工作人员持续监控进程,也许让线程休眠,每隔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. */
    }

任何一个像样的程序员都会在一瞬间禁用你的跟踪器。为什么要提示输入一个名字呢?我认为你只需将这些应用程序编码为打电话回家和/或记录他们自己的统计数据,而无需用户干预…@LarsTech:为什么程序员要禁用它?你是说你想监控自己公司对该软件的使用情况,这样你就知道你的顾问何时使用它,然后你就可以向你的客户收取使用费?有点不清楚。@IgbyLargeman听起来这个跟踪器是用来向最终用户收取任何程序或本例中的模拟软件所用时间的费用的。因此,如果有人禁用了它,他们就不必为它或其部分付费。我不是说这是诚实的——只是人性。这家咨询公司需要重新思考他们的业务战略。这听起来很有趣,基本上我需要制作一个程序启动器类型的程序。这是一个想法,虽然它很容易规避,不启动程序通过发射器。不确定管理层是否会100%满意,因为它不是很隐蔽,你必须改变人们开始该计划的习惯。谢谢你的主意!不客气。用户仍然可以通过不和对话框交互来忽略您记录作业名称的需要。与此同时,仿真软件仍在运行。对于launcher类型的解决方案,我建议启动应用程序的唯一方法是输入所需信息,假设他们使用launcher应用程序。但是,你可以通过删除应用程序桌面和任务栏、菜单栏链接,并将它们替换为launcher应用程序的链接来帮助他们改变习惯。