2011-01-31 63 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