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

标签 c# user-interface graphics dispose

我正在学习用 C# 绘制东西,我一直看到有关使用 dispose() 的建议,但我不太明白它的作用。

  • 我应该什么时候使用 dispose() 代码绘制图形?
  • 如果我会怎样 不?
  • 我需要每次都调用它吗 时间图形不可见,例如 就像在具有选项卡和 用户切换到另一个选项卡,并且 然后在他们切换回来时重新绘制它?
  • 如果我在不该调用的时候调用它,会破坏东西吗?
  • bat 侠能否逃脱 clown 的魔爪?

最佳答案

  • 我什么时候应该在代码绘制的图形上使用 dispose()? 当您完全完成任何实现 IDisposable 的对象时,您应该调用 在它有资格进行垃圾收集之前处理。正如其他人指出的那样,最好使用 using 语句而不是直接调用 Dispose
  • 如果我不这样做会怎样?您的程序的效率会稍微低一些,因为它占用的资源会比必要的多一些。这是不处理图形的唯一缺点;但是,不处理其他类实际上会导致错误(一个著名的例子是StreamWriter)。因此,作为一般规则,最好始终释放任何实现 IDisposable 的类。
  • 我是否需要在每次图形不可见时调用它,例如在具有选项卡且用户切换到另一个选项卡的 GUI 上,然后在他们切换回来时重新绘制它?不可以。只有当您完全处理完对象后,才应将其丢弃。
  • 如果我在不该调用它时会破坏东西吗? 是的。如果您在使用完对象之前调用 Dispose,然后尝试使用已释放的对象,您将得到一个 ObjectDisposedException
  • bat 侠能逃脱 clown 的魔掌吗?明天收看,同样的 bat 时间,同样的 bat channel !

关于c# - 什么时候需要在图形上使用 dispose()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3171185/

相关文章:

windows - GDI 已经加速。有谁知道这是什么时候发生的?

在 Linux 上绘制 Golang OpenGL 线,但在 Windows10 上不绘制

c# - 我可以在 C# 中通过 serialPort 发送一个 int 吗?

c# - 在 .NET 4.0 下使用 SmtpClient、SendAsync 和 Dispose 的最佳实践是什么

c# - C# 中如何比较两个对象的值

c# - 如何在.net中发布wmi类?

java - 无法以编程方式添加到 JPanel

java - 如何在 Qt 设计器中使控件自动调整大小?

c# - 统一引擎 : Which component called a running script?

algorithm - 如何动态地将时间放置在时钟中?