वर्तमान ProcessID कैसे प्राप्त करें?


83

.NET फ्रेमवर्क का उपयोग करके अपने स्वयं के अनुप्रयोग से वर्तमान प्रक्रिया आईडी प्राप्त करने का सबसे सरल तरीका क्या है?


2
सच। मुझे लगता है कि यहां कुछ गलत हुआ: D @VictorYarema
Deniz

जवाबों:


121

मौजूदा प्रक्रिया और उपयोग के लिए एक संदर्भ प्राप्त System.Diagnosticsकी Process.Idसंपत्ति:

int nProcessID = Process.GetCurrentProcess().Id;

2
System.Diagnostics का उपयोग करना; या System.Diagnostics.Process.GetCurrentProcess ()। Id; मैं हमेशा खुद की रक्षा करता हूं और यह मानता हूं कि वर्तमान या भविष्य के नीति नियम इस कॉल को कुछ लॉक डाउन या प्रतिबंधात्मक मोड में प्रतिबंधित करेंगे क्योंकि यह प्रक्रिया क्षेत्रों तक पहुंच बनाता है।
सकाल सर्फर

17
Process.GetCurrentProcess().Id

या, चूंकि Processवर्ग है IDisposable, और आपके एप्लिकेशन के चलने के दौरान प्रोसेस आईडी बदलने वाली नहीं है, तो आपके पास स्थैतिक संपत्ति के साथ एक सहायक वर्ग हो सकता है:

public static int ProcessId
{
    get 
    {
        if (_processId == null)
        {
            using(var thisProcess = System.Diagnostics.Process.GetCurrentProcess())
            {
                _processId = thisProcess.Id;
            }
        }
        return _processId.Value;
    }
}
private static int? _processId;

7

आगामी .NET 5 परिचय देता है Environment.ProcessIdजिसे प्राथमिकता दी जानी चाहिएProcess.GetCurrentProcess().Id क्योंकि यह आवंटन से बचता है और प्रक्रिया ऑब्जेक्ट को निपटाने की आवश्यकता है।

https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/ एक बेंचमार्क दिखाता है जहां Environment.ProcessIdकेवल 68ns के बजाय 3ns लगते हैं Process.GetCurrentProcess().Id

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.