【发布时间】:2016-03-11 19:17:10
【问题描述】:
背景
我正在思考如何从逻辑上判断一个过程是否完成。我目前有一个单独的程序,它生成一个文本文件,其标题栏名称为“信息”。当信息文本文件出现时,程序正在向它转储一大堆数据。这可能需要几秒钟或很多时间,具体取决于数据。基本上,我试图想出告诉我何时完成写入该文件的最佳方法。请记住,当我说文本文件时,它与记事本不同,因为它没有物理文件位置。它只是生成它的程序的一部分。
这是我目前所拥有的:
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> Private Shared Function FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
End Function
Dim proc As Integer
Do Until proc <> 0
proc = FindWindow(vbNullString, "Information")
Loop
我在想我可以使用进程 ID 并确定它正在使用多少 CPU。如果它很高,则该进程当前正在使用中,如果低则它已完成。以上代码查找进程没有问题。
这是判断是否完成的好方法吗?如果是这样,我如何根据进程 ID 确定 CPU 使用率?可能有比我想象的更好的方法。
【问题讨论】:
-
我注意到流程类有很多属性。也许其中之一会导致我的信息窗口?我确实查看并尝试遍历该进程的所有线程,但有时有很多,有时很少.. 取决于它需要多大的数据文件.. 所以不是很可靠