[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dotgnu-pnet-commits] pnetlib ChangeLog System.Windows.Forms/Timer.cs
From: |
Heiko Weiss |
Subject: |
[dotgnu-pnet-commits] pnetlib ChangeLog System.Windows.Forms/Timer.cs |
Date: |
Tue, 18 Jul 2006 05:48:11 +0000 |
CVSROOT: /sources/dotgnu-pnet
Module name: pnetlib
Changes by: Heiko Weiss <brubbel> 06/07/18 05:48:11
Modified files:
. : ChangeLog
System.Windows.Forms: Timer.cs
Log message:
fixed a memory leak with Timers.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pnetlib/ChangeLog?cvsroot=dotgnu-pnet&r1=1.2430&r2=1.2431
http://cvs.savannah.gnu.org/viewcvs/pnetlib/System.Windows.Forms/Timer.cs?cvsroot=dotgnu-pnet&r1=1.1&r2=1.2
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/pnetlib/ChangeLog,v
retrieving revision 1.2430
retrieving revision 1.2431
diff -u -b -r1.2430 -r1.2431
--- ChangeLog 13 Jul 2006 13:12:32 -0000 1.2430
+++ ChangeLog 18 Jul 2006 05:48:11 -0000 1.2431
@@ -1,3 +1,7 @@
+2006-07-18 Heiko Weiss <address@hidden>
+
+ * System.Windows.Forms/Timer.cs: fixed a memory leak.
+
2006-07-13 Heiko Weiss <address@hidden>
*runtime/System/GC.cs: added a define for tests
Index: System.Windows.Forms/Timer.cs
===================================================================
RCS file: /sources/dotgnu-pnet/pnetlib/System.Windows.Forms/Timer.cs,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- System.Windows.Forms/Timer.cs 23 Jun 2003 05:14:42 -0000 1.1
+++ System.Windows.Forms/Timer.cs 18 Jul 2006 05:48:11 -0000 1.2
@@ -36,7 +36,9 @@
private bool enabled;
private int interval;
private Object timerCookie;
+ private EventHandler onTimer;
+ static private EventHandler EvExpire = new EventHandler(Expire);
// Constructors.
public Timer()
{
@@ -66,25 +68,9 @@
}
set
{
- lock(this)
- {
- if(enabled != value)
- {
+ if(enabled != value) {
enabled = value;
- if(value)
- {
- timerCookie =
ToolkitManager.Toolkit
-
.RegisterTimer
-
(this, interval,
-
new EventHandler(Expire));
- }
- else
- {
-
ToolkitManager.Toolkit.UnregisterTimer
-
(timerCookie);
- timerCookie =
null;
- }
- }
+ this.CheckTimer();
}
}
}
@@ -116,6 +102,27 @@
}
}
+ void CheckTimer() {
+ lock(this)
+ {
+ if( enabled && null != onTimer ) {
+ if( null == timerCookie ) {
+ timerCookie = ToolkitManager.Toolkit
+ .RegisterTimer
+ (this,
this.interval,EvExpire);
+ }
+ }
+ else {
+ if( null != timerCookie ) {
+ ToolkitManager.Toolkit.UnregisterTimer
+ (timerCookie);
+ timerCookie = null;
+ }
+ }
+ }
+ }
+
+
// Start the timer.
public void Start()
{
@@ -135,7 +142,16 @@
}
// Event that is emitted when the timer expires.
- public event EventHandler Tick;
+ public event EventHandler Tick {
+ add {
+ this.onTimer =
(EventHandler)Delegate.Combine(this.onTimer,value);
+ this.CheckTimer();
+ }
+ remove {
+ this.onTimer =
(EventHandler)Delegate.Remove(this.onTimer,value);
+ this.CheckTimer();
+ }
+ }
// Dispose of the timer.
#if !CONFIG_COMPONENT_MODEL
@@ -152,19 +168,13 @@
Enabled = false;
}
- // Raise the "Tick" event.
- protected virtual void OnTick(EventArgs e)
- {
- if(Tick != null)
- {
- Tick(this, e);
- }
- }
-
// Method that is called by the toolkit when the timer expires.
- private void Expire(Object sender, EventArgs e)
+ static private void Expire(Object sender, EventArgs e)
{
- OnTick(e);
+ Timer timer = (Timer) sender;
+ if( null != timer && null != timer.onTimer ) {
+ timer.onTimer(timer,e);
+ }
}
}; // class Timer
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] pnetlib ChangeLog System.Windows.Forms/Timer.cs,
Heiko Weiss <=