首先,感謝您抽出時間閱讀這篇文章。WPF - 如何通過綁定停止計時器
我有一個計時器類,每60秒從我的SQL數據庫中下載一次「產品」。即檢查可能已被其他用戶編輯的更新產品。
這裏是我的類代碼:
public class GetProducts : INotifyPropertyChanged
{
public GetProducts()
{
Timer updateProducts = new Timer();
updateProducts.Interval = 60000; // 60 second updates
updateProducts.Elapsed += timer_Elapsed;
updateProducts.Start();
}
public ObservableCollection<Products> EnabledProducts
{
get
{
return ProductsDB.GetEnabledProducts();
}
}
void timer_Elapsed(object sender, ElapsedEventArgs e)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("EnabledProducts"));
}
public event PropertyChangedEventHandler PropertyChanged;
}
我然後綁定到該到我的XAML(WPF)控制的標籤屬性:
<Page.Resources>
<!-- Products Timer -->
<products_timer:GetProducts x:Key="getProducts_timer" />
</Page.Resources>
Tag="{Binding Source={StaticResource getProducts_timer}, Path=EnabledProducts, Mode=OneWay}"
這個作品真的很好。我遇到的問題是,當控件託管的窗口或頁面關閉時,無論發生什麼,計時器都會繼續消失。
任何人都可以提出一種方法來停止頁面/控制不再可用時停止股票?
再次感謝您的時間。所有的幫助非常感謝。
如何簡單地有一個OnClosing事件和CAL ling updateProducts.Stop()? – eandersson