【发布时间】:2013-06-05 21:33:25
【问题描述】:
我正在开发一个应用程序,我在其中使用 CertAdm.dll 来建立与证书颁发机构的连接。有时我会收到错误“已尝试打开证书颁发机构数据库会话,但活动会话已经太多。可能需要配置服务器以允许其他会话。”
如果我像下面的代码一样配置我的连接,我不会收到错误消息并且一切正常。
CERTADMINLib.ICertView2 cv2 = new CERTADMINLib.CCertViewClass();
try
{
cv2.OpenConnection(srtCAConfig);
}
catch
{
GC.Collect();
GC.WaitForPendingFinalizers();
cv2.OpenConnection(srtCAConfig);
}
现在我想知道的是,我读过很多人说你不应该使用 GC.Collect()。为什么我不应该?它解决了我的问题?
非常感谢所有帮助。
【问题讨论】:
-
Scott Holdens Blog 是该问题的答案。
-
因为如果
GC.Collect“修复”了您的应用程序,则表明您在其他地方遇到了严重问题。您需要弄清楚为什么会泄漏内存并修复它,而不是修补症状。 -
另外 GC.Collect 只是对 VM 触发收集的建议。不能保证它确实在收集。
标签: c# .net garbage-collection certificate-authority