[英]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.