public class Timer : Component {
private bool enabled;
- private IContainer container;
private int interval = 100;
private DateTime expires;
+ internal Thread thread;
+#if NET_2_0
+ object control_tag;
+#endif
internal static readonly int Minimum = 15;
public Timer ()
}
[DefaultValue (false)]
- public bool Enabled {
+ public virtual bool Enabled {
get {
return enabled;
}
if (value != enabled) {
enabled = value;
if (value) {
+ // Use AddTicks so we get some rounding
+ expires = DateTime.UtcNow.AddMilliseconds (interval > Minimum ? interval : Minimum);
+
+ thread = Thread.CurrentThread;
XplatUI.SetTimer (this);
} else {
XplatUI.KillTimer (this);
+ thread = null;
}
}
}
interval = value;
// Use AddTicks so we get some rounding
- expires = DateTime.Now.AddMilliseconds (interval > Minimum ? interval : Minimum);
+ expires = DateTime.UtcNow.AddMilliseconds (interval > Minimum ? interval : Minimum);
if (enabled == true) {
XplatUI.KillTimer (this);
}
}
}
+
+#if NET_2_0
+ [Localizable(false)]
+ [Bindable(true)]
+ [TypeConverter(typeof(StringConverter))]
+ [DefaultValue(null)]
+ [MWFCategory("Data")]
+ public object Tag {
+ get {
+ return control_tag;
+ }
+
+ set {
+ control_tag = value;
+ }
+ }
+#endif
public void Start ()
{
Enabled = false;
}
- private bool has_last_fire = false;
- private DateTime last_fire;
-
internal void TickHandler (object sender, EventArgs e)
{
OnTick (e);