Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 将计时器间隔设置为无限_.net_.net 2.0_Timer - Fatal编程技术网

.net 将计时器间隔设置为无限

.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()?: 该值必须大于零, 小于或等

我有一个方法可以将BO
连接.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-奇怪的道歉。还是说我的问题很愚蠢。