2012-03-06 260 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