2012-03-06 247 views
0

我必須使用某種技術來獲取System Up時間。由StackOverflow中的某個人推薦我已經使用Performance Counter來獲取TimeSpan中的System Up時間。PerformanceCounter拋出異常

  try 
      { 
       var uptime = new PerformanceCounter("System", "System Up Time"); 
       uptime.NextValue(); 
       return TimeSpan.FromSeconds(uptime.NextValue()); 
      } 
      catch (Exception) 
      { 

      } 

它在我的電腦上完美運行沒有任何問題。但問題發生在我朋友的電腦中。在他的PC上,當運行下面的行時會引發異常。

var uptime = new PerformanceCounter("System", "System Up Time"); 

例外是"Input String was not in Correct format"

+0

區域設置問題? – Guillaume 2012-03-06 13:42:46

+1

不,PerformanceCounter不會引發FormatException。考慮刪除try/catch關鍵字。 – 2012-03-06 13:45:48

+0

@HansPassant,我也相信,直到我發現這個異常,我試圖刪除try/catch,我的應用程序凍結,它說,「沒有反應」.... – jchoudhury 2012-03-06 13:55:39

回答

1

PerformanceCounter根據權限等可以有不同的表現 - 有關此的一些信息,請參閱MSDN

另一點是,在Windows XP中,如果沒有配置分頁文件,則某些性能計數器不可用(有關詳細信息,請參閱http://support.microsoft.com/kb/884558/en-us)。

無關的東西:

「吞嚥」例外像你這樣的一個空catch塊做的是不好的做法!

+0

我已經嘗試了超過6臺電腦並行,只有朋友的電腦這個奇怪的例外,我不知道爲什麼。 – jchoudhury 2012-03-06 13:56:55

+0

@jchoudhury你讀過我的回答,並關注鏈接? – Yahia 2012-03-06 13:59:36

+0

是的......我遵循鏈接,它說的都是關於許可。我想,我的朋友PC沒有代碼的基本權限... – jchoudhury 2012-03-06 14:01:21