哟
由于其私有成员之一,我的一个WPF控件保留在内存中。 incriminate成员是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
答案 0 :(得分:0)
你应该看一下弱事件模式。虽然这不是一个简单的话题。