草庐IT

disposable

全部标签

c# - 什么时候需要在图形上使用 dispose()?

我正在学习用C#绘制东西,我一直看到有关使用dispose()的建议,但我不太明白它的作用。我应该什么时候使用dispose()代码绘制图形?如果我会怎样不?我需要每次都调用它吗时间图形不可见,例如就像在具有选项卡和用户切换到另一个选项卡,并且然后在他们切换回来时重新绘制它?如果我在不该调用的时候调用它,会破坏东西吗?bat侠能否逃脱clown的魔爪? 最佳答案 我什么时候应该在代码绘制的图形上使用dispose()?当您完全完成任何实现IDisposable的对象时,您应该调用在它有资格进行垃圾收集之前处理。正如其他人指出的那样,

c# - 在 "using"语句中使用 yield 时,Dispose 何时发生?

我有一个关于延迟执行和数据处理的问题。考虑以下示例:privateIEnumerableParseFile(stringfileName){using(StreamReadersr=newStreamReader(fileName)){stringline;while((line=sr.ReadLine())!=null){yieldreturnline;}}}privatevoidLineReader(stringfileName){intcounter=0;foreach(stringlineinParseFile(fileName)){if(counter==2){break;/

c# - GC、Finalize() 和 Dispose 之间的关系是什么?

GC用于托管对象,Finalize用于非托管对象,这就是我一直在阅读的内容。Dispose是隐式的,Finalize是Explicit是我一直在阅读的内容。有人可以给我一个模块的示例吗,其中出于不同原因使用了所有这三种东西? 最佳答案 GC是垃圾回收。它是自动内存管理,负责处理托管堆上分配的对象的清理。.NETGC采用标记清除算法。当发生垃圾回收时,它基本上认为要清理的堆部分中的所有对象都是可恢复的。然后它会经历一个标记过程,在这个过程中它会扫描根。IE。它标识应用程序仍在使用的对象。完成后,剩余的对象有资格进行清理。作为清理的一部

c# - 从使用 block 内部的异常检测 Dispose()

我的应用程序中有以下代码:using(vardatabase=newDatabase()){varpoll=//Somedatabasequerycode.foreach(Questionquestioninpoll.Questions){foreach(Answeranswerinquestion.Answers){database.Remove(answer);}//Thisisasamplelinethatsimulateanerror.thrownewException("deupau");database.Remove(question);}database.Remove(p

c# - 为什么在 asp.net MVC Controller 中需要显式 Dispose() 方法?谁能解释它的复杂性? (特定于 asp.net)

我知道C#可以通过其垃圾收集器很好地管理资源。但既然它有那个,它到底是做什么用的,为什么需要它?谁能解释为什么在asp.netmvc中需要.Dispose()?另外,Dispose连接是什么意思?为什么需要它?任何人都知道为什么像db.Dispose()那样处理数据库连接很重要?这是与EF相关还是与SQLServer相关?我正在尝试了解其中的确切原因。protectedoverridevoidDispose(booldisposing){db.Dispose();base.Dispose(disposing);} 最佳答案 Disp

c# - 在 IDisposable.Dispose 中拦截异常

在IDisposable.Dispose方法中有没有办法判断是否抛出异常?using(MyWrapperwrapper=newMyWrapper()){thrownewException("Baderror.");}如果在using语句中抛出异常,我想在释放IDisposable对象时了解它。 最佳答案 您可以扩展IDisposable用方法Complete并使用这样的模式:using(MyWrapperwrapper=newMyWrapper()){thrownewException("Baderror.");wrapper.Co

c# - Dispose() 方法中 GC.SuppressFinalize(this) 的目的是什么?

我有以下代码:publicvoidDispose(){if(_instance!=null){_instance=null;//CallGC.SupressFinalizetotakethisobjectoffthefinalization//queueandpreventfinalizationcodeforthisobjectfrom//executingasecondtime.GC.SuppressFinalize(this);}}虽然有评论解释了那个与GC相关的调用的目的,但我仍然不明白为什么它在那里。一旦所有实例不复存在,对象是否注定要进行垃圾回收,例如在usingblock

c# - Dispose,什么时候调用?

考虑以下代码:namespaceDisposeTest{usingSystem;classProgram{staticvoidMain(string[]args){Console.WriteLine("CallingTest");Test();Console.WriteLine("CalltoTestdone");}staticvoidTest(){DisposeImplementationdi=newDisposeImplementation();}}internalclassDisposeImplementation:IDisposable{~DisposeImplementati

c# - 为什么 Dispose() 应该是非虚拟的?

我是C#的新手,如果这是一个明显的问题,我深表歉意。在MSDNDisposeexample,他们定义的Dispose方法是非虚拟的。这是为什么?这对我来说似乎很奇怪-我希望拥有自己的非托管资源的IDisposable的子类只会覆盖Dispose并在他们自己的方法底部调用base.Dispose()。谢谢! 最佳答案 典型的用法是Dispose()被重载,具有公共(public)的、非虚拟的Dispose()方法和虚拟的、protectedDispose(bool)。publicDispose()方法调用Dispose(true),子

c# - Dispose() 和 Ninject 指南

因此,我有一个从WCF服务公开的方法:publicGetAllCommentsResponseGetAllComments(GetAllCommentsRequestrequest){varresponse=newGetAllCommentsResponse();using(_unitOfWork)try{Guard.ArgNotNull(request,"request");varresults=_unitOfWork.CommentRepository.Get(d=>d.Id>0).ToArray();//...Dorestofstuffhere}catch(Exceptionex