【发布时间】:2019-08-09 13:40:36
【问题描述】:
我在下面的 C# 代码中遇到了内存泄漏问题,这是什么意思以及如何解决它。我已经在使用using 块了。
未能保存或关闭由 new System.Management.ManagementObjectSearcher("select DeviceID, Model from Win32_DiskDrive where InterfaceType = 'USB'") 创建的资源会泄漏它
using (var managementObjectSearcher = new ManagementObjectSearcher("select DeviceID, Model from Win32_DiskDrive where InterfaceType = 'USB'").Get())
{
foreach (var drive in managementObjectSearcher){}
}
【问题讨论】:
-
你知道类的
dispose方法中有什么返回类型为ManagementObjectSearcher("").Get()吗? -
您是否尝试过将 .Get() 方法移至 foreach 语句?(
foreach (var drive in managementObjectSearcher).Get()) -
你怎么断定这是内存泄漏?根据接受的答案,Finalization 仍然会被触发
标签: c# memory-leaks