【发布时间】:2021-11-02 21:30:45
【问题描述】:
我正在使用 C# 编写一个应用程序,以便用户记录他们对程序的使用时间。他们可以选择进程并将它们存储在数据库中。
该应用当前正在使用一个以 5 秒为间隔的计时器,以使用 Diagnostics.Process.GetProcesses() 循环遍历设备上每个正在运行的进程,并将此名称列表与数据库中的名称进行核对。
这是一个合理的方法吗?或者最好为数据库中的每个进程创建一个线程来监听它以开始使用Win32Process.ProcessInfo.StartedEventHandler()?
【问题讨论】:
-
如果它可以工作,并且可以很好地满足您的需求,那么问题出在哪里?我们是工程师,没有完美的解决方案。
-
您的要求是什么?以满足您的要求的方式实施它
-
顺便说一句:运行一个 EXE != 使用它。我的电脑运行了超过 200 个 EXE,我觉得我只使用 Firefox。我不知道其他人都在做什么。
-
每个条目运行一个线程绝对是矫枉过正。如果我在数据库中有 1000 个条目怎么办?你会运行 1000 个线程吗?这将导致卸载或错误报告
-
是的,经过考虑,我现在会坚持使用计时器,因为每个条目一个线程似乎有点多。我担心的是,当应用程序在后台运行时,它可能会使用比它必须使用的更多资源,但我想我必须更多地开发应用程序才能以这种特定方式测试其性能。感谢您的帮助!