2011-01-31 53 views
1

我做了一个应用程序来检查配额空间检查应用程序的这样DIDiskQuotaUser泄漏的文件句柄

DIDiskQuotaUser QuotaInfo = null; 
try 
{ 
    QuotaInfo = this.gDiskQuotaControl.FindUser(SAMUser); 
} 
catch 
{ 
    QuotaInfo = null; 
} 

FindUser的Defenition

[DispId(1610743828)] 
public virtual DIDiskQuotaUser FindUser(string LogonName); 

来自谈到做:

[TypeLibType(2)] 
    [ComSourceInterfaces("DiskQuotaTypeLibrary.DIDiskQuotaControlEvents")] 
    [Guid("7988B571-EC89-11CF-9C00-00AA00A14F56")] 
    [ClassInterface(0)] 
    public class DiskQuotaControlClass : DIDiskQuotaControl, DiskQuotaControl, DIDiskQuotaControlEvents_Event, IDiskQuotaControlEvents, DIDiskQuotaUser, IEnumerable 

问题是循环正在泄漏服务器上的文件句柄即时检查,我不能看到任何方式来处置返回FindUser

+2

题外话:catch语句是多余的。如果在表达式评估(方法调用或调用尝试)期间发生异常,则分配不会发生。 – Tergiver 2011-01-31 15:23:18

回答

1

我想尝试在对象上调用Marshal.FinalReleaseComObject。这应该等同于在COM对象上调用Release,直到其引用计数为零,这应该处理该对象并释放其句柄。

+0

似乎已经修复它。感谢您的帮助 – EKS 2011-02-01 13:43:26