首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

资源开释

2013-07-04 
资源释放是用moc nullmc null还是用moc.Dispose()mc.Dispose()/// summary/// 获取网卡信息///

资源释放

是用
moc = null;
mc = null;


还是用
moc.Dispose();
mc.Dispose();



        /// <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())
    {
     
    }
}
这样你就不用手动去关闭它了,系统会自动把他关闭 。因为手动关闭有的时候会出错的
[解决办法]
引用:
用 using
using(anagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"))
{
    using(?ManagementObjectCollection?moc?=?mc.GetInstances())
    {
     
    }
}
这样你就不用手动去关闭它了,系统会自动把他关闭 。因为手动关闭有的时候会出错的
同意!~
[解决办法]
using()
{

}

热点排行