我有一个程序在我们仓库的一些可穿戴终端上运行。这些终端通过远程桌面连接到我们的服务器,该服务器实际托管并运行该程序。
该程序扫描产品,启动另一个程序(如果它还没有为当前用户运行)处理某些处理,然后完成一些额外的处理。我遇到的一个问题是检查第二个程序是否已经运行。我已经尝试了很多不同的代码,但这是我所确定的,因为它似乎工作得很好。
Private Function CheckPrintLabelRunning() As Boolean
Dim selectQuery As String = "Select * From Win32_Process Where Name = 'vbPrintLabel.exe'"
Dim searcher As New System.Management.ManagementObjectSearcher(selectQuery)
Dim processList As System.Management.ManagementObjectCollection = searcher.[Get]()
For Each obj As System.Management.ManagementObject In processList
Dim argList As String() = New String() {String.Empty, String.Empty}
Dim returnVal As Integer = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList))
If returnVal = 0 Then
If argList(0).ToString.ToUpper = Environment.UserName.ToUpper Then
Return True
End If
End If
Next
Return False
End Function
周四,当用户在终端上使用该应用程序时,我的错误日志中会弹出以下错误消息。这个应用程序看起来似乎已经关闭,触及主要表单的FormClosing事件(表明它不是完全崩溃,但是处理不当或环境崩溃的事情可能?)。这是一个例外:
System.Management.ManagementException: Not found
at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
at System.Management.ManagementObject.InvokeMethod(String methodName, ManagementBaseObject inParameters, InvokeMethodOptions options)
at System.Management.ManagementObject.InvokeMethod(String methodName, Object[] args)
at vbFullCasePicking.frmFullCasePicking.CheckPrintLabelRunning()
at vbFullCasePicking.frmFullCasePicking.StartPrintLabelListener()
at vbFullCasePicking.frmFullCasePicking.PrintLabel(Boolean blnSMPLabels, String strCartonID)
我想指出的是,在这个特定的问题中,应用程序没有自行关闭,但我仍然对此错误感到好奇,因为它是我在所有月份中首次看到的错误这已被使用。
编辑:更多信息...运行应用程序的服务器是Windows Server 2003.就我们所见,此问题尚未生成任何类型的任何事件日志条目。
编辑2:我完全忘记了这一点,但是I have a previous question关于这个问题。我最初查询了当多个用户同时尝试查询时似乎导致错误的所有进程。这可能是同样的问题,只是窗口小得多。任何意见都非常感谢。