草庐IT

dispatch_semaphore_dispose

全部标签

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# - WPF Dispatcher.Invoke 'hanging'

我有一个有点复杂的WPF应用程序,当尝试使用调度程序调用UI线程时,它似乎“挂起”或卡在Wait调用中。一般流程是:处理按钮的点击事件创建一个新线程(STA),它:创建演示者和UI的新实例,然后调用方法Disconnect断开连接然后在UI上设置一个名为Name的属性Name的setter然后使用以下代码设置属性:if(this.Dispatcher.Thread!=Thread.CurrentThread){this.Dispatcher.Invoke(DispatcherPriority.Normal,(ThreadStart)delegate{this.Name=value;//

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# - Dispatcher Invoke(...) 与 BeginInvoke(...) 混淆

我很困惑,为什么我不能通过在Count()方法中在我的Dispatcher上使用“BeginInvoke”使这个测试计数器应用程序与2个(或更多)同时运行的计数器文本框一起工作。您可以通过将BeginInvoke替换为Invoke来解决该问题。但这并不能解决我的困惑。这是我正在谈论的示例代码:publicclassCounterTextBox:TextBox{privateint_number;publicvoidStart(){(newAction(Count)).BeginInvoke(null,null);}privatevoidCount(){while(true){if(_n

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