簡體   English   中英

OpenNETCF進程ID混亂

[英]OpenNETCF Process ID Confusion

我在.NET Compact Framework 3.5移動設備應用程序中使用OpenNETCF 2.3。 在程序啟動時,我正在尋找應用程序的重復運行實例。 我很困惑,為什么從各種方法中獲得的當前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的屏幕截圖。

請理解,對單個實例進行測試的其他方法對我不感興趣。 謝謝。

首先,快速查看帶符號和無符號數字(可在桌面上免費使用計算器來驗證這些數字)。

無符號十進制的3459667490是32位十六進制的0xCE365622
有符號十進制的-835299806是32位十六進制的0xCE365622

看到相似之處嗎?

如果您進行強制轉換,那么無論是簽名還是未簽名,我都願意打賭,ID匹配的時間是100%。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM