首先,感谢您抽出宝贵时间阅读这篇文章。
我有一个计时器类,它每 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}"
这真的很好用。我遇到的问题是,当控件所在的窗口或页面关闭时,无论如何计时器都会继续计时。
一旦页面/控件不再可用,任何人都可以提出一种停止自动收报机的方法吗?
再次感谢您的宝贵时间。非常感谢所有帮助。