Я использую OpenNETCF 2.3 в приложении для мобильных устройств .NET Compact Framework 3.5. При запуске программы я ищу повторяющиеся запущенные экземпляры моего приложения. Я не понимаю, почему текущий ProcessID, который я получаю из различных методов, кажется неверным примерно в половине случаев.
Public Shared Sub Main()
Dim appName As String = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name & ".exe"
Dim intCurrentProcessId As Integer = OpenNETCF.Diagnostics.ProcessHelper.GetCurrentProcessID
'Dim intCurrentProcessId As Integer = Process.GetCurrentProcess.Id()
For Each p As ToolHelp.ProcessEntry In ToolHelp.ProcessEntry.GetProcesses
If p.ProcessID <> intCurrentProcessId AndAlso p.ExeFile.Contains(appName) Then
MessageBox.Show("KILLING p.ExeFile: " & p.ExeFile & " p.processid: " & p.ProcessID & " intCurrentProcessId: " & intCurrentProcessId)
'p.Kill()
End If
Next
End Sub
Почему так получается, что intCurrentProcessId случайно не соответствует p.ProcessId и является отрицательным числом?
У меня слишком мало репутации, чтобы опубликовать снимок экрана, на котором показаны p.ProcessID = 3459667490 и intCurrentProcessID = -835299806.
Пожалуйста, поймите, что альтернативные методы тестирования на единичных экземплярах меня не интересуют. Спасибо.