ヨ
私の WPF コントロールの 1 つは、プライベート メンバーの 1 つが原因でメモリに保持されます。有罪のメンバーは 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