私のソリューションにはいくつかのユーザーコントロールがあり、メインウィンドウで ContentControl のコンテンツを変更するだけです。1つのユーザーコントロールにはタイマーがあります
BringTrinket trincket = new BringTrinket();
trincket.TrincketBringed += new TrincketBringedEventHandler(trincket_TrincketBringed);
this.contentSwitcher.Content = new BringTrinket();
}
void trincket_TrincketBringed(object sender, TrincketEventArgs e)
{
MessageBox.Show(e.TrincketNumber);
this.contentSwitcher.Content = new Loading();
}`
なんらかのイベントの後、メイン ウィンドウのコンテンツが (new Loading()) に変更されますが、問題ありません。
public partial class BringTrinket : UserControl, ISwitchable
{
public event TrincketBringedEventHandler TrincketBringed;
private DispatcherTimer timer;
public BringTrinket()
{
InitializeComponent();
/////////////////////////////////////////////////////////////////////////////
timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0, 0, 0, 0, 1800);
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
/////////////////////////////////////////////////////////////////////////////
}
/////////////////////////////////////////////////////////////////////////////
void timer_Tick(object sender, EventArgs e)
{
if (TrincketBringed != null)
{
TrincketBringed(this, new TrincketEventArgs("Hello"));
//TrincketBringed = null;
}
}
しかし、BringTrinket でタイマーをナビゲートした後も、そのユーザー コントロールをどのように破棄すればよいでしょうか? (TrinketBringed を null に設定できることはわかっていますが、タイマーは引き続き動作します)
タイマーだけでなく、ユーザーコントロールもメモリに残っていると思います