1
哟WPF控制保留在存储器中,由于DispatcherTimer事件处理程序
我的一个WPF控制的被保留在存储器中,由于其私有成员之一。入侵成员是DispatcherTimer,保留是因为Tick事件处理程序。 (这种泄漏是在工具ANTS Memory Profiler的帮助下检测到的)
显然,我在加载/卸载时设置/删除了处理程序。并控制卸载...
void TransportControl_Loaded(object sender, RoutedEventArgs e)
{
if (m_playheadTimer == null)
{
m_playheadTimer = new System.Windows.Threading.DispatcherTimer();
m_playheadTimer.Tick += PlayheadTimer_Tick;
m_playheadTimer.Interval = TimeSpan.FromMilliseconds(50);
}
}
void TransportControl_Unloaded(object sender, RoutedEventArgs e)
{
if (m_playheadTimer != null)
{
if (m_playheadTimer.IsEnabled)
m_playheadTimer.Stop();
m_playheadTimer.Tick -= PlayheadTimer_Tick;
}
}
但仍然我卡住了那个麻烦(同我的控制卡在内存中)。 任何想法,THX
非常感谢CommanderZ,你让我的一天!小费正是我正在寻找的东西。在执行DispatcherTimerWeakEvent后,我的控件从memory.Cheers中移除 – Patrick 2010-09-23 11:52:56