diff options
author | Marek Safar <marek.safar@gmail.com> | 2015-01-15 12:05:50 +0300 |
---|---|---|
committer | Marek Safar <marek.safar@gmail.com> | 2015-01-15 12:05:50 +0300 |
commit | 02782f4a1ad12eb30bf7e55ad091b3643bd50a3a (patch) | |
tree | 3af7c37859b5d8f846c61a8b1a67b0e0b57f0e90 | |
parent | bc6ea9d725bddb937306b0a28ee4fad77bccd96a (diff) |
[system] System.Timer from reference sources
m--------- | external/referencesource | 0 | ||||
-rw-r--r-- | mcs/class/System/ReferenceSources/SR.cs | 8 | ||||
-rw-r--r-- | mcs/class/System/System.Timers/ChangeLog | 98 | ||||
-rw-r--r-- | mcs/class/System/System.Timers/ElapsedEventHandler.cs | 36 | ||||
-rw-r--r-- | mcs/class/System/System.Timers/Timer.cs | 230 | ||||
-rw-r--r-- | mcs/class/System/System.Timers/TimersDescriptionAttribute.cs | 47 | ||||
-rw-r--r-- | mcs/class/System/System.dll.sources | 7 | ||||
-rw-r--r-- | mcs/class/System/Test/System.Timers/TimerTest.cs | 7 | ||||
-rw-r--r-- | mcs/class/System/mobile_System.dll.sources | 7 |
9 files changed, 19 insertions, 421 deletions
diff --git a/external/referencesource b/external/referencesource -Subproject 9c130beac984f221264e19e8252252d002716a4 +Subproject 7880551cdb3be6e01af37b6102796b64dff3034 diff --git a/mcs/class/System/ReferenceSources/SR.cs b/mcs/class/System/ReferenceSources/SR.cs index fcf7bf254f7..e9f46336167 100644 --- a/mcs/class/System/ReferenceSources/SR.cs +++ b/mcs/class/System/ReferenceSources/SR.cs @@ -242,6 +242,14 @@ partial class SR public const string Barrier_ctor_ArgumentOutOfRange = "Barrier_ctor_ArgumentOutOfRange"; public const string WaitHandleCannotBeOpenedException_InvalidHandle = "WaitHandleCannotBeOpenedException_InvalidHandle"; + public const string InvalidParameter = "InvalidParameter"; + public const string TimerAutoReset = "TimerAutoReset"; + public const string TimerEnabled = "TimerEnabled"; + public const string TimerInterval = "TimerInterval"; + public const string TimerIntervalElapsed = "TimerIntervalElapsed"; + public const string TimerInvalidInterval = "TimerInvalidInterval"; + public const string TimerSynchronizingObject = "TimerSynchronizingObject"; + public const string ArgumentOutOfRange_Bounds_Lower_Upper = "ArgumentOutOfRange_Bounds_Lower_Upper"; public const string ContentDispositionInvalid = "ContentDispositionInvalid"; public const string ContentTypeInvalid = "ContentTypeInvalid"; 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; } - } - } -} diff --git a/mcs/class/System/System.dll.sources b/mcs/class/System/System.dll.sources index 6ea4b8b9801..3ed47e6d1bf 100644 --- a/mcs/class/System/System.dll.sources +++ b/mcs/class/System/System.dll.sources @@ -676,9 +676,6 @@ System.Threading/SemaphoreFullException.cs System.Threading/ThreadExceptionEventArgs.cs System.Threading/ThreadExceptionEventHandler.cs System.Timers/ElapsedEventArgs.cs -System.Timers/ElapsedEventHandler.cs -System.Timers/Timer.cs -System.Timers/TimersDescriptionAttribute.cs System/UriBuilder.cs System/UriComponents.cs System/Uri.cs @@ -1097,6 +1094,10 @@ ReferenceSources/Win32Exception.cs ../../../external/referencesource/System/security/system/security/permissions/typedescriptorpermission.cs +../../../external/referencesource/System/services/timers/system/timers/ElapsedEventHandler.cs +../../../external/referencesource/System/services/timers/system/timers/Timer.cs +../../../external/referencesource/System/services/timers/system/timers/TimersDescriptionAttribute.cs + ../../../external/referencesource/System/misc/hresults.cs ../../../external/referencesource/System/misc/invariantcomparer.cs ../../../external/referencesource/System/misc/SecurityUtils.cs diff --git a/mcs/class/System/Test/System.Timers/TimerTest.cs b/mcs/class/System/Test/System.Timers/TimerTest.cs index 8ea60d22247..2b6a95ff768 100644 --- a/mcs/class/System/Test/System.Timers/TimerTest.cs +++ b/mcs/class/System/Test/System.Timers/TimerTest.cs @@ -168,13 +168,13 @@ namespace MonoTests.System.Timers timer.Enabled = true; Assert.Fail ("#2"); } catch (Exception ex) { - Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#3"); - Assert.IsFalse (timer.Enabled); + Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#3"); + Assert.IsTrue (timer.Enabled); } } [Test] - [ExpectedException (typeof (ArgumentException))] + [ExpectedException (typeof (ArgumentOutOfRangeException))] public void Interval_TooHigh_Enabled_Throw () { timer.Interval = 100; @@ -201,7 +201,6 @@ namespace MonoTests.System.Timers } [Test] - [ExpectedException (typeof (ObjectDisposedException))] public void Disposed_ThrowOnEnabled () { timer.Interval = 100; diff --git a/mcs/class/System/mobile_System.dll.sources b/mcs/class/System/mobile_System.dll.sources index 372108ef9bd..95f5cfacdeb 100644 --- a/mcs/class/System/mobile_System.dll.sources +++ b/mcs/class/System/mobile_System.dll.sources @@ -330,9 +330,6 @@ System.Threading/SemaphoreFullException.cs System.Threading/ThreadExceptionEventArgs.cs System.Threading/ThreadExceptionEventHandler.cs System.Timers/ElapsedEventArgs.cs -System.Timers/ElapsedEventHandler.cs -System.Timers/Timer.cs -System.Timers/TimersDescriptionAttribute.cs System/DefaultUriParser.cs System/FileStyleUriParser.cs System/FtpStyleUriParser.cs @@ -716,6 +713,10 @@ ReferenceSources/Win32Exception.cs ../../../external/referencesource/System/security/system/security/permissions/typedescriptorpermission.cs +../../../external/referencesource/System/services/timers/system/timers/ElapsedEventHandler.cs +../../../external/referencesource/System/services/timers/system/timers/Timer.cs +../../../external/referencesource/System/services/timers/system/timers/TimersDescriptionAttribute.cs + ../../../external/referencesource/System/misc/hresults.cs ../../../external/referencesource/System/misc/invariantcomparer.cs ../../../external/referencesource/System/misc/SecurityUtils.cs |