.net 将计时器间隔设置为无限
我有一个方法可以将BO.net 将计时器间隔设置为无限,.net,.net-2.0,timer,.net,.net 2.0,Timer,我有一个方法可以将BO连接.AliveInterval链接到系统.Timers.Timer(.NET2) 某些连接被管理为始终连接 在这种情况下设置可以吗 if (myConnection.AliveInterval == Connection.TimeInfinite) { myTimer.Interval = double.PositiveInfinity; } ? 我是否应该期望计时器在经过事件后抛出异常或上升?为什么不myTimer.Stop()?: 该值必须大于零, 小于或等
连接.AliveInterval
链接到系统.Timers.Timer
(.NET2)
某些连接被管理为始终连接
在这种情况下设置可以吗
if (myConnection.AliveInterval == Connection.TimeInfinite)
{
myTimer.Interval = double.PositiveInfinity;
}
?
我是否应该期望计时器在经过事件后抛出异常或上升?为什么不myTimer.Stop()
?:
该值必须大于零,
小于或等于
Int32.MaxValue
将抛出一个ArgumentException
,
当间隔大于
Int32.MaxValue、和定时器为
当前已启用。如果计时器是
当前未启用,不存在异常
直到启用为止
因此,如果启用simer,PositiveInfinity
将引发异常
现在,一个解决方案是禁用计时器并将值设置为PositiveInfinity
。启用计时器时,捕获ArgumentException
并将间隔设置为PositiveInfinity
当使用System.Timers.Timer
的构造函数时,可能您指的是我在MonoDevelop和VS中的黄色工具提示中得到的一些误导性信息:
将该值设置为无限毫秒以禁用周期信号
您可以为类型为Int32
、UInt32
或TimeSpan
的参数获取此信息。有些令人惊讶的是,这些类型没有提供名为Infinite
的属性
您希望使用Timeout.Infinite
来获得所需的结果
请注意,在线参考资料对其进行了正确描述:
指定Timeout.Infinite以防止计时器启动
编辑:我刚刚意识到这对setter不起作用,只对计时器的构造函数起作用。因此,您最好使用@spender建议的
myTimer.Stop()
,或者@Bolu评论的myTimer.Enabled=false
,因为这不是一个操作,而是一个初始化。而我没有启动()@Bolu。大概但是,时间间隔如何?
?在您的问题缺乏必要信息以提供更好的信息帮助的情况下,我认为可能是您的问题风格没有用处。你这种傲慢的行为是在自毁前程。如果我拿起这个问题,有机会观察你的“社区精神”,我就不会费心回答了。基于MSDN:该值必须大于零,小于或等于Int32.MaxValue。引用MSDN:“将Enabled设置为true与调用Start相同,而将Enabled设置为false与调用Stop相同。”。你对@Bolu的回复与你对我的回复不一致。@Oded:一旦建立了连接,就开始计算连接时间。那么,看看连接是否超时了?@serhio:我想你最好道歉…@Oded:你不会读心,但是如果myConnection.AliveInterval==Connection.TimeInfinite myTimer.Interval=double.PositiveInfinity,则读取代码代码>这不是真正的代码,我将其修改为不言自明。@serhio-奇怪的道歉。还是说我的问题很愚蠢。