【问题标题】:Visual Studio 2010 SP1 breaks things?Visual Studio 2010 SP1 坏了?
【发布时间】:2011-10-28 20:13:45
【问题描述】:

我正在使用这个小代码 sn-p 来捕获具有某些参数的 Java 进程:

string query = "Select * From Win32_Process Where Name = 'javaw.exe'";
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection processList = searcher.Get();

foreach (ManagementObject obj in processList)
{
    string cmdLine = obj.GetPropertyValue("CommandLine").ToString();
    if (cmdLine.IndexOf("someapplication") != -1)
    {
        // ...
    }
}

就在几天前,当我没有 VS2010 的 SP1 时,这段代码就像一个魅力。现在它在第 7 行抛出空指针异常。我正在尝试为 .NET Framework 2.0 进行编译。

帮助!? :/

【问题讨论】:

  • 是什么让您相信 Visual Studio 2010 SP1 是罪魁祸首?这似乎不太可能。
  • 这在我升级到 SP1 后开始发生。但问题不存在,无论如何,谢谢。

标签: c# .net-2.0 visual-studio-2010


【解决方案1】:
if (cmdLine != null && cmdLine.IndexOf("someapplication") != -1)

【讨论】:

  • 是的,但是……让我这样说吧。 cmdLine 变量以前从未为空。
【解决方案2】:

它可能与 SP1 的关系不大,而与 Java 更新有关。只需检查null

string query = "Select * From Win32_Process Where Name = 'javaw.exe'";
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection processList = searcher.Get();

foreach (ManagementObject obj in processList)
{
    object cmdLineValue = obj.GetPropertyValue("CommandLine");

    if(cmdLineValue != null) {
        string cmdLine = cmdLineValue.ToString();
        if (cmdLine.IndexOf("someapplication") != -1)
        {
             // ...
        }
    }
}

【讨论】:

    猜你喜欢
    • 2011-11-20
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多