jjzjj

c# - 清除 Crystal Reports ReportDocument 对象使用的资源的最佳方法是什么?

我正在开发一个使用CrystalReports进行报告的应用程序。它在ReportDocument对象中打开给定的报表,执行它需要执行的操作,然后关闭报表。using(varreport=OpenReport(reportSourceInfo)){//Dostuffwiththereportreport.Close();}OpenReport方法对源文件进行一些验证并返回一个打开的ReportDocument对象。测试表明此代码可以完成预期的工作,而且看起来没有任何问题。我真正听取建议的问题是,当我对报告项目进行代码分析(CA)构建时,我收到以下CA消息:CA2202:Microsof

c# - 为什么 Visual Studio IDE 有时会初始化“this.components 对象 : and other times not?

我最近注意到VisualStudioDesigner(C#)的一些我不理解的行为,想知道是否有人可以澄清...在我的一些Windows窗体中,设计器生成的代码的第一行是这样的;this.components=newSystem.ComponentModel.Container();在这种情况下,dispose方法在同一个设计器文件中,dispose方法在case“if”条件下放置两个“Dispose”调用,如下所示;protectedoverridevoidDispose(booldisposing){if(disposing&&(components!=null)){componen

c# - 仅针对托管资源的最小 IDisposable implimenation

关于处理非托管资源的“标准完整”IDisposable实现有很多信息-但实际上这种情况(非常)罕见(大多数资源已经被托管类包装).这个问题侧重于针对更常见的“仅限托管资源”情况的IDisposable的最小实现。1:下面代码中IDisposable的最小实现是否正确,是否存在问题?2:是否有任何理由添加完整的标准IDisposable实现(Dispose()、Dispose(bool)、Finalizer等)超过所呈现的最小实现?3:在这种最小情况下,使Dispose虚拟化(因为我们不提供Dispose(bool))是否可行/明智?4:如果这个最小的实现被一个完整的标准实现替换,包括一

c# - 模拟 DataReader 并获取 Rhino.Mocks.Exceptions.ExpectationViolationException : IDisposable. Dispose();预期#0,实际#1

我正在尝试模拟一个SqlDataReaderSqlDataReaderreader=mocks.CreateMock();Expect.Call(reader.Read()).Return(true).Repeat.Times(1);Expect.Call(reader.Read()).Return(false);Expect.Call(reader.HasRows).Return(true);Expect.Call(reader.Dispose);Expect.Call(reader["City"]).Return("Boise");Expect.Call(reader["State

c# - 处理 SQL 命令并关闭连接

直到现在我总是使用类似的结构从数据库中获取数据并填充数据表publicstaticDataTableGetByID(inttestID){DataTabletable=newDataTable();stringquery=@"SELECT*FROMtbl_TestASTWHERET.testID=@testID";using(SqlConnectioncn=newSqlConnection(Configuration.DefaultConnectionString)){SqlCommandcmd=newSqlCommand(query,cn);cmd.Parameters.Add("@

c# - 静态一次性元素

我应该如何管理带有一次性元素的static类?有什么经验法则吗?基本上,我应该重构并制作以下​​DisposableDataManager类非-静态还是将所有内容留给GC好吗?.publicstaticclassDisposableDataManager{//ImageListisan'IDisposable'.publicstaticImageListFirstImageList{get;privateset;}publicstaticImageListSecondImageList{get;privateset;}staticDisposableDataManager(){Firs

c# - 为什么在 main() 退出之前调用 Dispose()?

我的.net服务通过在Main()循环退出之前的finallyblock中调用resourceName.Dispose()来清理其所有非托管资源。我真的必须这样做吗?我认为我不能因为进程正在结束而泄漏任何资源的想法是否正确?Windows将关闭所有不再使用的句柄,对吗? 最佳答案 实现IDisposable的对象可以封装的资源类型没有限制。IDisposable对象封装的绝大部分资源会在进程关闭时被操作系统清理,但有些程序可能会使用操作系统不知道的资源。例如,需要底层数据库不支持的锁定模式的数据库应用程序可能会使用一个或多个表来跟踪

c# - 在 `using` 语句中内联创建的所有对象都将被释放吗?

这个问题在这里已经有了答案:Doestheusingstatementdisposeonlythefirstvariableitcreate?(6个答案)关闭8年前。这可能在别处得到解答,但经过一些搜索后,我没有在正常的using上下文之外找到太多关于该主题的内容。我很好奇在usingblock中创建的所有对象是否会像原始对象一样被处理掉。上下文如下:通常我会做这样的事情:using(varconn=newSqlConnection(connectionString))using(varcmd=newSqlCommand(commandText,conn)){//Doeverythin

c# - IDisposable GC.SuppressFinalize(this) 位置

我为我的代码使用默认的IDisposable实现模板(模式)。片段:publicvoidDispose(){Dispose(true);GC.SuppressFinalize(this);}protectedvirtualvoidDispose(boolisDisposing){if(!this.disposed){if(isDisposing){//cleanupmanagedresources}//cleanupunmanagedresourcesthis.disposed=true;}}我的问题:为什么在Dispose公共(public)方法中调用“GC.SuppressFina

c# - this.Dispose() 在关闭后不会释放 Form 使用的内存。

我有一个Windows窗体应用程序,在该应用程序中单击某些按钮可以从第二窗体创建对象。在用户关闭此第二个表单时,此表单使用的内存不会被释放(根据任务管理器)。我尝试在退出按钮上使用this.dispose(),在主代码中使用this.close(),form2=null,并尝试在处理之前通过代码清除此表单中的所有控件。这些都不起作用,每次用户单击按钮时,应用程序的内存使用量都会增加,并且不会释放前一个实例使用的内存。我应该用什么来解决这个问题? 最佳答案 调用Dispose不会清除对象使用的内存。Dispose旨在用于运行用户定义的