C# ';iEnabled';和';启动/停止';调度员的名字?
我认为IsEnabled=false/true与类System.Windows.Threading.Dispatchermer的停止/启动方法相同 我说得对吗 [编辑] Start():以全间隔倒计时开始计时器。 IsEnabled=false:暂停计时器,间隔倒计时保持不变。 IsEnabled=true:恢复计时器并继续上一次使用的间隔倒计时。C# ';iEnabled';和';启动/停止';调度员的名字?,c#,wpf,C#,Wpf,我认为IsEnabled=false/true与类System.Windows.Threading.Dispatchermer的停止/启动方法相同 我说得对吗 [编辑] Start():以全间隔倒计时开始计时器。 IsEnabled=false:暂停计时器,间隔倒计时保持不变。 IsEnabled=true:恢复计时器并继续上一次使用的间隔倒计时。 Stop():停止计时器,间隔倒计时是否会重置?考虑到Start/Stop切换IsEnabled属性,您的假设已接近 启动/停止不同于重置的间隔,只
Stop():停止计时器,间隔倒计时是否会重置?考虑到
Start/Stop
切换IsEnabled
属性,您的假设已接近
启动/停止
不同于重置的间隔
,只要切换已启用
将不会重置间隔
发件人:
当
计时器启动后停止计时器
当
计时器停止后,启动计时器
开始设置已启用为true
Start重置计时器间隔
编辑:
我所说的重置间隔并不是interval属性本身,而是确定触发下一个tick事件的时间间隔
例如,如果你有一个1000毫秒的间隔,并且你在需要运行250毫秒时停止/禁用它(它运行了750毫秒),这将取决于你如何再次启动它
- 如果使用
启动,则传递的间隔将重置为0,并在引发start()
勾选事件之前1000毫秒
- 如果您使用
IsEnabled=true重新启用它,则它将从当前位置继续,并且
勾选事件将在250ms后引发
我希望这能为您澄清这一点。Dispatchermer.IsEnabled的实现
public bool IsEnabled
{
get
{
return _isEnabled;
}
set
{
lock (_instanceLock)
{
if (!value && _isEnabled)
{
Stop();
}
else
{
if (!value || _isEnabled)
return;
Start();
}
}
}
}
如果时间间隔被重置,会发生什么情况?目前,我认为在调用Start/Stop时,间隔值(int)不会改变。不是间隔值本身,而是背景间隔。我已经更新了我的答案来回答这个问题。也许文档中说Start会重置计时器,但是如果您一直调用
Start
,则不会重置超时。你需要停止/启动。我刚刚测试了这个,发现启动本身不会重置计时器。您必须先停止,然后再开始让它将计时器重置为完整间隔。这是不正确的。Start()、Stop()和IsEnabled=true和IsEnabled=false都执行相同的操作。我刚刚创建了一个示例应用程序,在该应用程序中,我不断地将IsEnabled设置为false,然后在计时器运行时返回true-计时器从未完成。这是因为无论调用IsEnabled=false还是Stop(),都会在源代码下重置间隔: