none
vs2005 timer控件的interval值最大到底是多少?不同资料介绍不一样 RRS feed

  • 问题

  •  

    timer控件的interval值最大到底是多少?有的说最大6万多一点,有的说可以到百万,我试了一下,设成百万也可以,但不知运行时对不对,间隔太长又没法验证。
    2008年12月19日 2:24

答案

  • 反编.net framwork  我们可以得到


    [DefaultValue(100), SRCategory("CatBehavior"), SRDescription("TimerIntervalDescr")]
    public int Interval
    {
        get
        {
            return this.interval;
        }
        set
        {
            lock (this.syncObj)
            {
                if (value < 1)
                {
                    object[] args = new object[] { value, 0.ToString(CultureInfo.CurrentCulture) };
                    throw new ArgumentOutOfRangeException("Interval", SR.GetString("TimerInvalidInterval", args));
                }
                if (this.interval != value)
                {
                    this.interval = value;
                    if ((this.Enabled && !base.DesignMode) && (this.timerWindow != null))
                    {
                        this.timerWindow.RestartTimer(value);
                    }
                }
            }
        }
    }
     
    说明这是个int32  而且呢  小于1的时候会报错哦
     

     

     

     

     

    继续察看int32

     

    [Serializable, StructLayout(LayoutKind.Sequential), ComVisible(true)]
    public struct Int32 : IComparable, IFormattable, IConvertible, IComparable<int>, IEquatable<int>
    {
      

     



    public const int MaxValue = 0x7fffffff;
     

    }
     

     

    说明  最大值  2147483647

     

     

     

    2008年12月19日 4:23

全部回复

  • 那么你为什么要用timer的interval值来控制准确时间呢?
    假设interval = 1000 (1秒)
    那么我要实现30秒。
    只要在timer执行一个变量叠加
    然后通过变量来实现控制时间是否容易理解呢。
    2008年12月19日 4:18
  • 反编.net framwork  我们可以得到


    [DefaultValue(100), SRCategory("CatBehavior"), SRDescription("TimerIntervalDescr")]
    public int Interval
    {
        get
        {
            return this.interval;
        }
        set
        {
            lock (this.syncObj)
            {
                if (value < 1)
                {
                    object[] args = new object[] { value, 0.ToString(CultureInfo.CurrentCulture) };
                    throw new ArgumentOutOfRangeException("Interval", SR.GetString("TimerInvalidInterval", args));
                }
                if (this.interval != value)
                {
                    this.interval = value;
                    if ((this.Enabled && !base.DesignMode) && (this.timerWindow != null))
                    {
                        this.timerWindow.RestartTimer(value);
                    }
                }
            }
        }
    }
     
    说明这是个int32  而且呢  小于1的时候会报错哦
     

     

     

     

     

    继续察看int32

     

    [Serializable, StructLayout(LayoutKind.Sequential), ComVisible(true)]
    public struct Int32 : IComparable, IFormattable, IConvertible, IComparable<int>, IEquatable<int>
    {
      

     



    public const int MaxValue = 0x7fffffff;
     

    }
     

     

    说明  最大值  2147483647

     

     

     

    2008年12月19日 4:23