2011-03-22 100 views
0

我正在尋找一個我可以從C#調用的變量,例如對特定應用程序的實例唯一的Environment.Username(例如應用程序最初打開時的時間戳或某物)。唯一實例會話ID是否在程序中生效?

如果這樣可用,那會讓我的項目變得更容易。謝謝!

回答

3
Process.GetCurrentProcess().Id 

對應用程序進程的每個實例都是唯一的。它確實每次重新啓動應用程序時都會更改:)

+0

這是應用程序實例生命週期中的一個常量值嗎?是否需要手動定義或設置? – sooprise 2011-03-22 21:43:36

+0

你不設置它。它在您的進程啓動時由內核生成。它是獨一無二的,在一個過程的一生中不會改變。有關進程ID的更多信息,請參閱http://msdn.microsoft.com/en-us/library/ms683180(v=VS.85).aspx(這是.net屬性在.net框架中調用的基礎函數) – Washu 2011-03-22 21:44:18

+0

聽起來不錯,這會使我的開發工作更容易,而且我的程序更可靠。謝謝! – sooprise 2011-03-22 22:01:04

0

您可以使用Guid.NewGuid(),這是唯一的。如果您在應用程序的整個生命週期中都需要它,可以使用

public static Guid ApplicationId = Guid.NewGuid(); 

這將在第一次使用此類型時填充。

+0

東西不需要任何設置,只是住在C#中。我會爲我的OP添加一個附錄。 – sooprise 2011-03-22 21:41:54

0

Windows下的每個進程都有唯一的進程ID。您可以通過Process.Id屬性訪問它。要獲取Process的實例,該實例對應於當前正在運行的程序調用Process.GetCurrentProcess的實例。您的程序的每個實例都將在Windows中作爲一個單獨的進程表示,因此將收到不同的(和唯一的)進程ID。

0

我不知道我是否理解你的權利。你不需要這個嗎?

public static class MyClass { 
    // fore every process this value will be unique, but same for whole "life" of process 
    private static readonly Guid unique = Guid.NewGuid(); 
    public static Guid Unique { get { return unique; } } 
}