Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Safar <marek.safar@gmail.com>2015-01-15 12:05:50 +0300
committerMarek Safar <marek.safar@gmail.com>2015-01-15 12:05:50 +0300
commit02782f4a1ad12eb30bf7e55ad091b3643bd50a3a (patch)
tree3af7c37859b5d8f846c61a8b1a67b0e0b57f0e90 /mcs/class/System/System.Timers
parentbc6ea9d725bddb937306b0a28ee4fad77bccd96a (diff)
[system] System.Timer from reference sources
Diffstat (limited to 'mcs/class/System/System.Timers')
-rw-r--r--mcs/class/System/System.Timers/ChangeLog98
-rw-r--r--mcs/class/System/System.Timers/ElapsedEventHandler.cs36
-rw-r--r--mcs/class/System/System.Timers/Timer.cs230
-rw-r--r--mcs/class/System/System.Timers/TimersDescriptionAttribute.cs47
4 files changed, 0 insertions, 411 deletions
diff --git a/mcs/class/System/System.Timers/ChangeLog b/mcs/class/System/System.Timers/ChangeLog
deleted file mode 100644
index e417d1b4d09..00000000000
--- a/mcs/class/System/System.Timers/ChangeLog
+++ /dev/null
@@ -1,98 +0,0 @@
-2010-03-19 Sebastien Pouliot <sebastien@ximian.com>
-
- * Timer.cs: Removed old NET_2_0 defines and added some new
- MOONLIGHT defines (needed for the client stack)
-
-2009-09-29 Sebastien Pouliot <sebastien@ximian.com>
-
- * Timer_2_1.cs: Removed. No longer needed by Moonlight
-
-2009-09-27 Sebastien Pouliot <sebastien@ximian.com>
-
- * Timer_2_1.cs: New. A smaller, internal subset of Timer for
- Moonlight - needed for Socket.Close(int)
-
-2009-09-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
-
- * Timer.cs: lock access to the 'timer' field. Attemp to fix bug
- #537921.
-
-Wed Sep 17 11:48:00 CEST 2008 Paolo Molaro <lupus@ximian.com>
-
- * Timer.cs: rewritten to use Threading.Timer so it doesn't create a
- thread per timer and behaves better. Fixed also a few implementation
- bugs.
-
-2008-07-17 Jb Evain <jbevain@novell.com>
-
- * Timer.cs: Fix ArgumentException message.
- Patch by Paul Burton.
-
-2007-10-30 Robert Jordan <robertj@gmx.net>
-
- * Timer.cs (set_Enabled): Allow setting Enabled from within
- the Elapsed event handler. Fixes #325368.
-
-2007-09-07 Dick Porter <dick@ximian.com>
-
- * Timer.cs: This calls Thread methods in the finalizer too, so use
- the same workaround as in r85425.
-
-2007-09-05 Gert Driesen <drieseng@users.sourceforge.net>
-
- * Timer.cs: On 2.0 profile, only allow 32-bit interval in ctor.
-
-2006-12-19 Robert Jordan <robertj@gmx.net>
-
- * Timer.cs: Apply the latest patch at attached to bug #77847.
-
-2006-12-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
- * Timer.cs: Fixes race condition (bug #77847). Patch from Robert Jordan.
-
-2006-12-11 Robert Jordan <robertj@gmx.net>
-
- * Timer.cs: Fix race condition of the wait handle object.
- Fixes bug #77847.
-
-2005-11-16 Sebastien Pouliot <sebastien@ximian.com>
-
- * TimersDescriptionAttribute.cs: Revert Description property fix
- because it doesn't always returns null (exact conditions unknown).
-
-2005-11-16 Sebastien Pouliot <sebastien@ximian.com>
-
- * ElapsedEventHandler.cs: Remove [Serializable] from 2.0 profile.
- * Timer.cs: Add [Browsable(false)] to SynchronizingObject property for
- 2.0 profile.
- * TimersDescriptionAttribute.cs: Description always returns null.
-
-2005-05-27 Kornél Pál <kornelpal@hotmail.com>
-
- * Timer.cs: Fixed bug #75068 - Close() does not disable the timer
-
-2004-06-15 Lluis Sanchez Gual <lluis@ximian.com>
-
- * Timer.cs: The timer thread must be a background thread.
- This fixes #58816.
-
-2004-05-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
- * Timer.cs: if AutoReset, disable the timer before adding the callback
- to the ThreadPool. Patch by Tim Fries <timf@dicecorp.com>. Fixes bug
- #57993.
-
-2003-03-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
- * Timer.cs: Elapsed is an event. Added a few attributes.
-
-2002-11-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
- * ChangeLog:
- * ElapsedEventArgs.cs:
- * ElapsedEventHandler.cs:
- * Timer.cs:
- * TimersDescriptionAttribute.cs: New files.
-
- Don't use timers yet. If you do, your program will never end.
-
diff --git a/mcs/class/System/System.Timers/ElapsedEventHandler.cs b/mcs/class/System/System.Timers/ElapsedEventHandler.cs
deleted file mode 100644
index 5c971f2a77c..00000000000
--- a/mcs/class/System/System.Timers/ElapsedEventHandler.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// System.Timers.ElapsedEventHandler
-//
-// Authors:
-// Gonzalo Paniagua Javier (gonzalo@ximian.com)
-//
-// (C) 2002 Ximian, Inc (http://www.ximian.com)
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Timers {
-#if ONLY_1_1
- [Serializable]
-#endif
- public delegate void ElapsedEventHandler (object sender, ElapsedEventArgs e);
-}
-
diff --git a/mcs/class/System/System.Timers/Timer.cs b/mcs/class/System/System.Timers/Timer.cs
deleted file mode 100644
index 844ab30ed27..00000000000
--- a/mcs/class/System/System.Timers/Timer.cs
+++ /dev/null
@@ -1,230 +0,0 @@
-//
-// System.Timers.Timer
-//
-// Authors:
-// Gonzalo Paniagua Javier (gonzalo@ximian.com)
-//
-// (C) 2002 Ximian, Inc (http://www.ximian.com)
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// The docs talk about server timers and such...
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.ComponentModel;
-using System.Threading;
-
-namespace System.Timers
-{
- [DefaultEventAttribute("Elapsed")]
- [DefaultProperty("Interval")]
- public class Timer : Component, ISupportInitialize {
- double interval;
- bool autoReset;
- System.Threading.Timer timer;
- object _lock = new object ();
- ISynchronizeInvoke so;
- bool enabled;
-
- [Category("Behavior")]
- [TimersDescription("Occurs when the Interval has elapsed.")]
- public event ElapsedEventHandler Elapsed;
-
- public Timer () : this (100)
- {
- }
-
- public Timer (double interval)
- {
- // MSBUG: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=296761
- if (interval <= 0 || interval > 0x7FFFFFFF)
- throw new ArgumentException ("Invalid value: " + interval, "interval");
-
- autoReset = true;
- timer = new System.Threading.Timer (Callback, this, Timeout.Infinite, Timeout.Infinite); //disabled
- Interval = interval;
- }
-
- [Category("Behavior")]
- [DefaultValue(true)]
- [TimersDescription("Indicates whether the timer will be restarted when it is enabled.")]
- public bool AutoReset
- {
- get { return autoReset; }
- set { autoReset = value; }
- }
-
- [Category("Behavior")]
- [DefaultValue(false)]
- [TimersDescription("Indicates whether the timer is enabled to fire events at a defined interval.")]
- public bool Enabled
- {
- get {
- lock (_lock)
- return enabled && timer != null;
- }
- set {
- lock (_lock) {
- if (timer == null)
- throw new ObjectDisposedException (GetType ().ToString (), "The object has been disposed");
-
- if (enabled == value)
- return;
-
- if (value) {
- // As per MS docs (throw this only when the timer becomes enabled): http://msdn.microsoft.com/en-us/library/system.timers.timer.enabled(v=vs.110).aspx
- if (interval > Int32.MaxValue)
- throw new ArgumentException ("Invalid value: " + interval, "interval");
- enabled = true;
- timer.Change ((int)interval, autoReset ? (int)interval : 0);
- } else {
- enabled = false;
- timer.Change (Timeout.Infinite, Timeout.Infinite);
- }
- }
- }
- }
-
- [Category("Behavior")]
- [DefaultValue(100)]
- [RecommendedAsConfigurable(true)]
- [TimersDescription( "The number of milliseconds between timer events.")]
- public double Interval
- {
- get { return interval; }
- set {
- // The doc says 'less than 0', but 0 also throws the exception
- if (value <= 0)
- throw new ArgumentException ("Invalid value: " + value);
- // As per MS docs (throw only if enabled, otherwise postpone throwing until it becomes enabled): http://msdn.microsoft.com/en-us/library/system.timers.timer.interval(v=vs.110).aspx
- if (value > Int32.MaxValue && enabled)
- throw new ArgumentException ("Invalid value: " + value);
-
- lock (_lock) {
- if (timer == null)
- return;
- interval = value;
- //call Change only if enabled, otherwise it will be called when Enabled = true, see the comment above on throwing ArgumentException
- if (enabled)
- timer.Change ((int)interval, autoReset? (int)interval: 0);
- }
- }
- }
-
- public override ISite Site
- {
- get { return base.Site; }
- set { base.Site = value; }
- }
-
- [DefaultValue(null)]
- [TimersDescriptionAttribute("The object used to marshal the event handler calls issued " +
- "when an interval has elapsed.")]
- [Browsable (false)]
- public ISynchronizeInvoke SynchronizingObject
- {
- get { return so; }
- set { so = value; }
- }
-
- public void BeginInit ()
- {
- // Nothing to do
- }
-
- public void Close ()
- {
- lock (_lock)
- Dispose (true);
- }
-
- public void EndInit ()
- {
- // Nothing to do
- }
-
- public void Start ()
- {
- Enabled = true;
- }
-
- public void Stop ()
- {
- Enabled = false;
- }
-
- protected override void Dispose (bool disposing)
- {
- // Could call Close() twice
- if (timer == null)
- return;
-
- // If we're disposing explicitly, clear all
- // fields. If not, all fields will have been
- // nulled by the GC during finalization, so
- // trying to lock on _lock will blow up.
- if (disposing)
- {
- timer.Dispose ();
- timer = null;
- }
-
- base.Dispose (disposing);
- }
-
- static void Callback (object state)
- {
- Timer timer = (Timer) state;
- if (timer.Enabled == false)
- return;
- ElapsedEventHandler events = timer.Elapsed;
-
- try
- {
- if (!timer.autoReset)
- timer.Enabled = false; //this could throw ObjectDisposed if timer.Close() was just called, after the check for Enabled above
- }
- catch (ObjectDisposedException) {
- //Probably the Elapsed event should not fire if this Timer is found here to be closed
- return;
- }
-
- //If another thread calls Close() when this thread is right here (of further down), the Elapsed event might get called once more after this Timer was Closed()
- //It's not a problem, it happens with all Timers, but it's good to know...
-
- if (events == null)
- return;
-
- ElapsedEventArgs arg = new ElapsedEventArgs (DateTime.Now);
-
- if (timer.so != null && timer.so.InvokeRequired) {
- timer.so.BeginInvoke (events, new object [2] {timer, arg});
- } else {
- try {
- events (timer, arg);
- } catch {
- }
- }
- }
-
- }
-}
diff --git a/mcs/class/System/System.Timers/TimersDescriptionAttribute.cs b/mcs/class/System/System.Timers/TimersDescriptionAttribute.cs
deleted file mode 100644
index e774e2adf6e..00000000000
--- a/mcs/class/System/System.Timers/TimersDescriptionAttribute.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// System.Timers.TimersDescriptionAttribute
-//
-// Authors:
-// Gonzalo Paniagua Javier (gonzalo@ximian.com)
-//
-// (C) 2002 Ximian, Inc (http://www.ximian.com)
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.ComponentModel;
-
-namespace System.Timers
-{
- [AttributeUsage(AttributeTargets.All)]
- public class TimersDescriptionAttribute : DescriptionAttribute
- {
- public TimersDescriptionAttribute (string description)
- : base (description)
- {
- }
-
- // FIXME: when created in the unit test Description always return null
- public override string Description {
- get { return base.Description; }
- }
- }
-}