哟
由于其中一个私有成员,我的 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