C#内存并处理相关问题

Pri*_*lia 0 c# dispose

我有以下一段代码,只是想查看谁将调用dispose?它是自动调用的.

ToolTip toolTip = new ToolTip();
toolTip.SetToolTip(button, toolTipText);
Run Code Online (Sandbox Code Playgroud)

还要说我创建一个Timer局部变量,谁会调用dispose,内存泄漏怎么样,如果我立即调用dispose,那么timer事件就不会被触发.

我是否需要确保在调用计时器事件处理程序中调用,即使我没有对timer变量的任何引用.我还需要取消注册该计时器的事件处理程序.

编辑:

  • 但是如果我调用它,如何在ToolTip上调用dispose将无法显示.
  • 如果我没有任何参考,也为什么我需要处理Timer.
  • 我是否还需要取消注册计时器事件处理程序?
  • 保持引用也会增加类内存占用.

Han*_*ant 6

ToolTip在显示它的控件上注册事件处理程序.触发表单的Deactivate事件时会自动调用Hide()方法.表单关闭时会发生这种情况.这反过来确保其Windows句柄被销毁并且事件处理程序未注册.之后,没有剩余的一次性物品.

您可以使用Reflector或Reference Source自行验证.相关方法依次为BaseFormDeactivate,HideAllToolTips,Hide,ClearTopLevelControlEvents.

你不必调用Dispose(),你没有泄漏.