/// <summary> /// 获取网卡信息 /// </summary> /// <returns></returns> public static List<string> GetMacAddress() { try { //获取网卡硬件地址 string mac = ""; List<string> macList = new List<string>(); ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if ((bool)mo["IPEnabled"] == true) { mac = mo["MacAddress"].ToString(); macList.Add(mac); } } moc = null; mc = null; return macList;
} catch { return null; } finally { }
}
[解决办法] moc= null的意思是让moc不指向任何对象,此时 new ManagementClass()这个真实的对象还在内存中,等待回收(究竟什么时候回收是垃圾回收机制的问题)
而moc.Dispose();的意思是销毁 new ManagementClass();这个对象,但仍然指向这个被销毁的对象的地址;所以此时moc是不为null的,但它也无法使用
看下我的理解能否对您有所帮助~~ [解决办法] 用 using using(anagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration")) { using(?ManagementObjectCollection?moc?=?mc.GetInstances()) {