DNSServerSearchOrder在几秒钟内返回null

时间:2018-07-12 18:58:08

标签: c# .net winforms try-catch wmi

我想获取本地ChipSet信息,所以我做了

this._log.Create("Got a match for NIC with " + this.ourTargetChipSet);
this.isDhcpEnabled = (bool)mo.Properties["DHCPEnabled"].Value;
this.ipAdd = ((string[])mo["IPAddress"])[0];
this.subNet = ((string[])mo["IPSubnet"])[0];
this.gateway = ((string[])mo["DefaultIPGateway"])[0];

this.dns = ((string[])mo["DNSServerSearchOrder"])[0];

但是有时我注意到DNSServerSearchOrder返回null,显然我得到了System.NullReferenceException: Object reference not set to an instance of an object.的结果。但是我然后试图找出导致此问题的原因和时间(是的,不是每次都这样)。

因此,我试了一下,并添加了一个喊叫框(,我知道这确实不是最有效的方法。我可能永远被困在这里。很高兴接受建议和更好的方法):

this._log.Create("Got a match for NIC with " + this.ourTargetChipSet);
this.isDhcpEnabled = (bool)mo.Properties["DHCPEnabled"].Value;
this.ipAdd = ((string[])mo["IPAddress"])[0];
this.subNet = ((string[])mo["IPSubnet"])[0];
this.gateway = ((string[])mo["DefaultIPGateway"])[0];

// TODO: Need a better way.
{
    while (true)
    {
        try
        {
            this.dns = ((string[])mo["DNSServerSearchOrder"])[0];
        }
        catch (Exception e)
        {
            this._log.Highlight(e.ToString(), ConsoleColor.Red);
        }

        break;
    }
}

现在,我发现经过一定的尝试-捕获后返回DNSServerSearchOrder确实返回了正确的值。

为什么会发生这种情况,如果它在某个时间或某个时间之后得到更新,而我真的必须这样做,请提出另一种方法,因为这种方法肯定不是最佳方法。

0 个答案:

没有答案