问题1:
您好,我想知道是否有一种方法可以丢弃或销毁DispatcherTimer对象并创建一个新的同名对象?
问题2: 如果将DispatcherTimer对象设置为公共的,我能否在其他类中访问它?
问题2: 如果将DispatcherTimer对象设置为公共的,我能否在其他类中访问它?
timer.Stop()
来禁用或停止计时器。效果是一样的。是的,我假设你有这样的公共属性:
public DispatcherTimer MyTimer { get; private set; }
针对Lubo的正确回答,还有以下评论的主题:即使你不能销毁DispatcherTimer(很可能是因为它已经连接到WPF / UWP Dispatcher的非托管部分,并且与应用程序本身一样长),你仍应该取消订阅其事件。
比如说,如果你有一个方法(StartRefreshTimer),在其中初始化了你的DispatcherTimer并开始监听其Tick事件:
private DispatcherTimer _refreshTimer = new DispatcherTimer() { Interval = TimeSpan.FromMinutes(1) };
private void StartRefreshTimer()
{
if (_refreshTimer != null)
{
_refreshTimer.Tick += OnTick; // subscribe to timer's ticks
_refreshTimer.Start(); // start timer
}
}
private void OnTick(object sender, object args)
{
// your custom OnTick logic
}
接下来您应该有一个停止计时器并取消订阅其事件的方法:
private void StopRefreshTimer()
{
if (_refreshTimer != null)
{
_refreshTimer.Stop(); // stop timer
_refreshTimer.Tick -= OnTick; // unsubscribe from timer's ticks
}
}
myTimer1.Tick -= OnTimerTick_Move; myTimer1.Tick += new EventHandler(OnTimerTick_Move);
当计时器将被多次启动以便分离事件处理程序,或者你可以在调用myTimer1.Stop();
时这样做。 - vinsa