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

github.com/mono/corefx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/System.ComponentModel.TypeConverter/dir.props2
-rw-r--r--src/System.ComponentModel.TypeConverter/pkg/System.ComponentModel.TypeConverter.pkgproj2
-rw-r--r--src/System.ComponentModel.TypeConverter/ref/System.ComponentModel.Manual.cs35
-rw-r--r--src/System.ComponentModel.TypeConverter/ref/System.ComponentModel.TypeConverter.cs36
-rw-r--r--src/System.ComponentModel.TypeConverter/ref/System.ComponentModel.TypeConverter.csproj3
-rw-r--r--src/System.ComponentModel.TypeConverter/ref/project.json4
-rw-r--r--src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx21
-rw-r--r--src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.builds8
-rw-r--r--src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj13
-rw-r--r--src/System.ComponentModel.TypeConverter/src/System/Timers/ElapsedEventArgs.cs25
-rw-r--r--src/System.ComponentModel.TypeConverter/src/System/Timers/ElapsedEventHandler.cs8
-rw-r--r--src/System.ComponentModel.TypeConverter/src/System/Timers/System.ComponentModel.cs44
-rw-r--r--src/System.ComponentModel.TypeConverter/src/System/Timers/Timer.cs352
-rw-r--r--src/System.ComponentModel.TypeConverter/src/System/Timers/TimersDescriptionAttribute.cs46
-rw-r--r--src/System.ComponentModel.TypeConverter/src/project.json88
-rw-r--r--src/System.ComponentModel.TypeConverter/tests/System.ComponentModel.TypeConverter.Tests.builds4
-rw-r--r--src/System.ComponentModel.TypeConverter/tests/System.ComponentModel.TypeConverter.Tests.csproj10
-rw-r--r--src/System.ComponentModel.TypeConverter/tests/TimerTests.cs15
-rw-r--r--src/System.ComponentModel.TypeConverter/tests/project.json72
19 files changed, 685 insertions, 103 deletions
diff --git a/src/System.ComponentModel.TypeConverter/dir.props b/src/System.ComponentModel.TypeConverter/dir.props
index 34b2edfd20..ec6b27dedd 100644
--- a/src/System.ComponentModel.TypeConverter/dir.props
+++ b/src/System.ComponentModel.TypeConverter/dir.props
@@ -1,7 +1,7 @@
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\dir.props" />
<PropertyGroup>
- <AssemblyVersion>4.1.1.0</AssemblyVersion>
+ <AssemblyVersion>4.2.0.0</AssemblyVersion>
</PropertyGroup>
</Project>
diff --git a/src/System.ComponentModel.TypeConverter/pkg/System.ComponentModel.TypeConverter.pkgproj b/src/System.ComponentModel.TypeConverter/pkg/System.ComponentModel.TypeConverter.pkgproj
index 0a04b74bf4..8a570ec22e 100644
--- a/src/System.ComponentModel.TypeConverter/pkg/System.ComponentModel.TypeConverter.pkgproj
+++ b/src/System.ComponentModel.TypeConverter/pkg/System.ComponentModel.TypeConverter.pkgproj
@@ -6,7 +6,7 @@
<SupportedFramework>net45;netcore45;wp8;wpa81</SupportedFramework>
</ProjectReference>
<ProjectReference Include="..\ref\System.ComponentModel.TypeConverter.csproj">
- <SupportedFramework>net462;netcoreapp1.0;$(AllXamarinFrameworks)</SupportedFramework>
+ <SupportedFramework>net463;netcoreapp1.1;$(AllXamarinFrameworks)</SupportedFramework>
</ProjectReference>
<ProjectReference Include="..\src\System.ComponentModel.TypeConverter.builds" />
</ItemGroup>
diff --git a/src/System.ComponentModel.TypeConverter/ref/System.ComponentModel.Manual.cs b/src/System.ComponentModel.TypeConverter/ref/System.ComponentModel.Manual.cs
new file mode 100644
index 0000000000..657e2a7bda
--- /dev/null
+++ b/src/System.ComponentModel.TypeConverter/ref/System.ComponentModel.Manual.cs
@@ -0,0 +1,35 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+// Stub to unblock explosing System.Timers
+
+namespace System.ComponentModel
+{
+ public partial interface ISynchronizeInvoke
+ {
+ IAsyncResult BeginInvoke(Delegate method, object[] args);
+ object EndInvoke(IAsyncResult result);
+ object Invoke(Delegate method, object[] args);
+ bool InvokeRequired { get; }
+ }
+
+ public partial interface ISupportInitialize
+ {
+ void BeginInit();
+ void EndInit();
+ }
+
+ public partial class Component : IDisposable
+ {
+ public Component() { }
+ public void Dispose() { }
+ protected virtual void Dispose(bool disposing) { }
+ ~Component() { }
+ protected virtual object GetService(Type service) { return default(object); }
+ public override string ToString() { return default(string); }
+ protected virtual bool CanRaiseEvents { get { return default(bool); } }
+ protected bool DesignMode { get { return default(bool); } }
+ public virtual ISite Site { get { return default(ISite); } set { } }
+ }
+}
diff --git a/src/System.ComponentModel.TypeConverter/ref/System.ComponentModel.TypeConverter.cs b/src/System.ComponentModel.TypeConverter/ref/System.ComponentModel.TypeConverter.cs
index a7c6e527c8..236858a187 100644
--- a/src/System.ComponentModel.TypeConverter/ref/System.ComponentModel.TypeConverter.cs
+++ b/src/System.ComponentModel.TypeConverter/ref/System.ComponentModel.TypeConverter.cs
@@ -5,7 +5,6 @@
// Changes to this file must follow the http://aka.ms/api-review process.
// ------------------------------------------------------------------------------
-
namespace System.ComponentModel
{
public partial class ArrayConverter : System.ComponentModel.CollectionConverter
@@ -648,6 +647,41 @@ namespace System.ComponentModel
}
}
+namespace System.Timers
+{
+ public partial class Timer : System.ComponentModel.Component, System.ComponentModel.ISupportInitialize
+ {
+ public Timer() { }
+ public Timer(double interval) { }
+ public void BeginInit() { }
+ public void Close() { }
+ protected override void Dispose(bool disposing) { }
+ public void EndInit() { }
+ public void Start() { }
+ public void Stop() { }
+ public bool AutoReset { get { return default(bool); } set { } }
+ public bool Enabled { get { return default(bool); } set { } }
+ public double Interval { get { return default(double); } set { } }
+ public override System.ComponentModel.ISite Site { get { return default(System.ComponentModel.ISite); } set { } }
+ public System.ComponentModel.ISynchronizeInvoke SynchronizingObject { get { return default(System.ComponentModel.ISynchronizeInvoke); } set { } }
+ public event ElapsedEventHandler Elapsed { add { } remove { } }
+ }
+
+ public partial class TimersDescriptionAttribute : System.ComponentModel.DescriptionAttribute
+ {
+ public TimersDescriptionAttribute(string description) { }
+ public override string Description { get { return default(string); } }
+ }
+
+ public delegate void ElapsedEventHandler(object sender, ElapsedEventArgs e);
+
+ public partial class ElapsedEventArgs : EventArgs
+ {
+ internal ElapsedEventArgs(long fileTime) { }
+ public DateTime SignalTime { get { return default(DateTime); } }
+ }
+}
+
namespace System
{
public partial class UriTypeConverter : System.ComponentModel.TypeConverter
diff --git a/src/System.ComponentModel.TypeConverter/ref/System.ComponentModel.TypeConverter.csproj b/src/System.ComponentModel.TypeConverter/ref/System.ComponentModel.TypeConverter.csproj
index 4017d64217..c75d3aaaf1 100644
--- a/src/System.ComponentModel.TypeConverter/ref/System.ComponentModel.TypeConverter.csproj
+++ b/src/System.ComponentModel.TypeConverter/ref/System.ComponentModel.TypeConverter.csproj
@@ -3,10 +3,11 @@
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
<PropertyGroup>
<OutputType>Library</OutputType>
- <NuGetTargetMoniker>.NETStandard,Version=v1.5</NuGetTargetMoniker>
+ <NuGetTargetMoniker>.NETStandard,Version=v1.7</NuGetTargetMoniker>
</PropertyGroup>
<ItemGroup>
<Compile Include="System.ComponentModel.TypeConverter.cs" />
+ <Compile Include="System.ComponentModel.Manual.cs" />
</ItemGroup>
<ItemGroup>
<None Include="project.json" />
diff --git a/src/System.ComponentModel.TypeConverter/ref/project.json b/src/System.ComponentModel.TypeConverter/ref/project.json
index fa730bd026..0ea2b2490c 100644
--- a/src/System.ComponentModel.TypeConverter/ref/project.json
+++ b/src/System.ComponentModel.TypeConverter/ref/project.json
@@ -8,9 +8,9 @@
"System.Runtime": "4.0.0"
},
"frameworks": {
- "netstandard1.5": {
+ "netstandard1.7": {
"imports": [
- "dotnet5.1"
+ "dotnet5.8"
]
}
}
diff --git a/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx b/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx
index e730cadc26..f316fab3b3 100644
--- a/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx
+++ b/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx
@@ -192,4 +192,25 @@
<data name="TypeDescriptorSameAssociation" xml:space="preserve">
<value>Cannot create an association when the primary and secondary objects are the same.</value>
</data>
+ <data name="InvalidParameter" xml:space="preserve">
+ <value>Invalid value '{1}' for parameter '{0}'.</value>
+ </data>
+ <data name="TimerAutoReset" xml:space="preserve">
+ <value>Indicates whether the timer will be restarted when it is enabled.</value>
+ </data>
+ <data name="TimerEnabled" xml:space="preserve">
+ <value>Indicates whether the timer is enabled to fire events at a defined interval.</value>
+ </data>
+ <data name="TimerInterval" xml:space="preserve">
+ <value>The number of milliseconds between timer events.</value>
+ </data>
+ <data name="TimerIntervalElapsed" xml:space="preserve">
+ <value>Occurs when the Interval has elapsed.</value>
+ </data>
+ <data name="TimerInvalidInterval" xml:space="preserve">
+ <value>'{0}' is not a valid value for 'Interval'. 'Interval' must be greater than {1}.</value>
+ </data>
+ <data name="TimerSynchronizingObject" xml:space="preserve">
+ <value>The object used to marshal the event handler calls issued when an interval has elapsed.</value>
+ </data>
</root>
diff --git a/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.builds b/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.builds
index e45e2407b3..32575af192 100644
--- a/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.builds
+++ b/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.builds
@@ -4,13 +4,7 @@
<ItemGroup>
<Project Include="System.ComponentModel.TypeConverter.csproj" />
<Project Include="System.ComponentModel.TypeConverter.csproj">
- <TargetGroup>net45</TargetGroup>
- </Project>
- <Project Include="System.ComponentModel.TypeConverter.csproj">
- <TargetGroup>net462</TargetGroup>
- </Project>
- <Project Include="System.ComponentModel.TypeConverter.csproj">
- <TargetGroup>netstandard1.0</TargetGroup>
+ <TargetGroup>net463</TargetGroup>
</Project>
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.traversal.targets))\dir.traversal.targets" />
diff --git a/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj b/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj
index d632da0a0b..cc4be9940c 100644
--- a/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj
+++ b/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj
@@ -5,10 +5,8 @@
<ProjectGuid>{AF3EBF3B-526A-4B51-9F3D-62B0113CD01F}</ProjectGuid>
<RootNamespace>System.ComponentModel.TypeConverter</RootNamespace>
<AssemblyName>System.ComponentModel.TypeConverter</AssemblyName>
- <AssemblyVersion Condition="'$(TargetGroup)' == 'netstandard1.0' OR '$(TargetGroup)'=='net45'">4.0.0.0</AssemblyVersion>
- <ContractProject Condition="'$(TargetGroup)' == 'netstandard1.0' OR '$(TargetGroup)'=='net45'">..\ref\4.0\$(AssemblyName).depproj</ContractProject>
- <IsPartialFacadeAssembly Condition="'$(TargetGroup)'=='net45' OR '$(TargetGroup)'=='net462'">true</IsPartialFacadeAssembly>
- <NuGetTargetMoniker Condition="'$(TargetGroup)' == ''">.NETStandard,Version=v1.5</NuGetTargetMoniker>
+ <IsPartialFacadeAssembly Condition="'$(TargetGroup)'=='net463'">true</IsPartialFacadeAssembly>
+ <NuGetTargetMoniker Condition="'$(TargetGroup)' == ''">.NETStandard,Version=v1.7</NuGetTargetMoniker>
</PropertyGroup>
<!-- Default configurations to help VS understand the configurations -->
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'" />
@@ -55,6 +53,11 @@
<Compile Include="System\ComponentModel\UriTypeConverter.cs" />
</ItemGroup>
<ItemGroup Condition="'$(TargetGroup)'==''">
+ <Compile Include="System\Timers\ElapsedEventArgs.cs" />
+ <Compile Include="System\Timers\ElapsedEventHandler.cs" />
+ <Compile Include="System\Timers\System.ComponentModel.cs" />
+ <Compile Include="System\Timers\Timer.cs" />
+ <Compile Include="System\Timers\TimersDescriptionAttribute.cs" />
<Compile Include="System\ComponentModel\AttributeCollection.cs" />
<Compile Include="System\ComponentModel\AttributeProviderAttribute.cs" />
<Compile Include="System\ComponentModel\CancelEventHandler.cs" />
@@ -98,7 +101,7 @@
<ItemGroup Condition="'$(TargetGroup)'==''">
<EmbeddedResource Include="$(MsBuildThisFileDirectory)Resources\$(AssemblyName).rd.xml" />
</ItemGroup>
- <ItemGroup Condition="'$(TargetGroup)'=='net45' OR '$(TargetGroup)'=='net462'">
+ <ItemGroup Condition="'$(TargetGroup)'=='net463'">
<TargetingPackReference Include="mscorlib" />
<TargetingPackReference Include="System" />
</ItemGroup>
diff --git a/src/System.ComponentModel.TypeConverter/src/System/Timers/ElapsedEventArgs.cs b/src/System.ComponentModel.TypeConverter/src/System/Timers/ElapsedEventArgs.cs
new file mode 100644
index 0000000000..ed95b6fab3
--- /dev/null
+++ b/src/System.ComponentModel.TypeConverter/src/System/Timers/ElapsedEventArgs.cs
@@ -0,0 +1,25 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+namespace System.Timers
+{
+ public class ElapsedEventArgs : EventArgs
+ {
+ private DateTime _signalTime;
+
+ internal ElapsedEventArgs(long fileTime)
+ {
+ _signalTime = DateTime.FromFileTime(fileTime);
+ }
+
+ public DateTime SignalTime
+ {
+ get
+ {
+ return _signalTime;
+ }
+ }
+ }
+}
+
diff --git a/src/System.ComponentModel.TypeConverter/src/System/Timers/ElapsedEventHandler.cs b/src/System.ComponentModel.TypeConverter/src/System/Timers/ElapsedEventHandler.cs
new file mode 100644
index 0000000000..483abd7f92
--- /dev/null
+++ b/src/System.ComponentModel.TypeConverter/src/System/Timers/ElapsedEventHandler.cs
@@ -0,0 +1,8 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+namespace System.Timers
+{
+ public delegate void ElapsedEventHandler(object sender, ElapsedEventArgs e);
+}
diff --git a/src/System.ComponentModel.TypeConverter/src/System/Timers/System.ComponentModel.cs b/src/System.ComponentModel.TypeConverter/src/System/Timers/System.ComponentModel.cs
new file mode 100644
index 0000000000..37192540a4
--- /dev/null
+++ b/src/System.ComponentModel.TypeConverter/src/System/Timers/System.ComponentModel.cs
@@ -0,0 +1,44 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+// Stub to unblock explosing System.Timers
+
+namespace System.ComponentModel.Design
+{
+ public partial interface IDesignerHost
+ {
+ IComponent RootComponent { get; }
+ }
+}
+
+namespace System.ComponentModel
+{
+ public partial interface ISynchronizeInvoke
+ {
+ IAsyncResult BeginInvoke(Delegate method, object[] args);
+ object EndInvoke(IAsyncResult result);
+ object Invoke(Delegate method, object[] args);
+ bool InvokeRequired { get; }
+ }
+
+ public partial interface ISupportInitialize
+ {
+ void BeginInit();
+ void EndInit();
+ }
+
+ public partial class Component : IDisposable
+ {
+ public Component() { }
+ public void Dispose() { }
+ protected virtual void Dispose(bool disposing) { }
+ ~Component() { }
+ protected virtual object GetService(Type service) { return default(object); }
+ public override string ToString() { return default(string); }
+ protected virtual bool CanRaiseEvents { get { return default(bool); } }
+ protected bool DesignMode { get { return default(bool); } }
+ public virtual ISite Site { get { return default(ISite); } set { } }
+
+ }
+}
diff --git a/src/System.ComponentModel.TypeConverter/src/System/Timers/Timer.cs b/src/System.ComponentModel.TypeConverter/src/System/Timers/Timer.cs
new file mode 100644
index 0000000000..34881dc488
--- /dev/null
+++ b/src/System.ComponentModel.TypeConverter/src/System/Timers/Timer.cs
@@ -0,0 +1,352 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System.Threading;
+using System.ComponentModel;
+using System.ComponentModel.Design;
+using System.Security.Permissions;
+
+namespace System.Timers
+{
+ /// <summary>
+ /// <para>Handles recurring events in an application.</para>
+ /// </summary>
+ [DefaultProperty("Interval"), DefaultEvent("Elapsed"), HostProtection(Synchronization = true, ExternalThreading = true)]
+ public partial class Timer : Component, ISupportInitialize
+ {
+ private double _interval;
+ private bool _enabled;
+ private bool _initializing;
+ private bool _delayedEnable;
+ private ElapsedEventHandler _onIntervalElapsed;
+ private bool _autoReset;
+ private ISynchronizeInvoke _synchronizingObject;
+ private bool _disposed;
+ private Threading.Timer _timer;
+ private TimerCallback _callback;
+ private object _cookie;
+
+ /// <summary>
+ /// <para>Initializes a new instance of the <see cref='System.Timers.Timer'/> class, with the properties
+ /// set to initial values.</para>
+ /// </summary>
+ public Timer()
+ : base()
+ {
+ _interval = 100;
+ _enabled = false;
+ _autoReset = true;
+ _initializing = false;
+ _delayedEnable = false;
+ _callback = new TimerCallback(MyTimerCallback);
+ }
+
+ /// <summary>
+ /// <para>
+ /// Initializes a new instance of the <see cref='System.Timers.Timer'/> class, setting the <see cref='System.Timers.Timer.Interval'/> property to the specified period.
+ /// </para>
+ /// </summary>
+ public Timer(double interval)
+ : this()
+ {
+ if (interval <= 0)
+ throw new ArgumentException(SR.Format(SR.InvalidParameter, "interval", interval));
+
+ double roundedInterval = Math.Ceiling(interval);
+ if (roundedInterval > int.MaxValue || roundedInterval <= 0)
+ {
+ throw new ArgumentException(SR.Format(SR.InvalidParameter, "interval", interval));
+ }
+
+ interval = (int)roundedInterval;
+ }
+
+ /// <summary>
+ /// <para>Gets or sets a value indicating whether the Timer raises the Tick event each time the specified
+ /// Interval has elapsed,
+ /// when Enabled is set to true.</para>
+ /// </summary>
+ [TimersDescription(nameof(SR.TimerAutoReset), null), DefaultValue(true)]
+ public bool AutoReset
+ {
+ get
+ {
+ return _autoReset;
+ }
+
+ set
+ {
+ if (DesignMode)
+ _autoReset = value;
+ else if (_autoReset != value)
+ {
+ _autoReset = value;
+ if (_timer != null)
+ {
+ UpdateTimer();
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// <para>Gets or sets a value indicating whether the <see cref='System.Timers.Timer'/>
+ /// is able
+ /// to raise events at a defined interval.</para>
+ /// </summary>
+ // The default value by design is false, don't change it.
+ [TimersDescription(nameof(SR.TimerEnabled), null), DefaultValue(false)]
+ public bool Enabled
+ {
+ get
+ {
+ return _enabled;
+ }
+
+ set
+ {
+ if (DesignMode)
+ {
+ _delayedEnable = value;
+ _enabled = value;
+ }
+ else if (_initializing)
+ _delayedEnable = value;
+ else if (_enabled != value)
+ {
+ if (!value)
+ {
+ if (_timer != null)
+ {
+ _cookie = null;
+ _timer.Dispose();
+ _timer = null;
+ }
+ _enabled = value;
+ }
+ else
+ {
+ _enabled = value;
+ if (_timer == null)
+ {
+ if (_disposed)
+ {
+ throw new ObjectDisposedException(GetType().Name);
+ }
+
+ int i = (int)Math.Ceiling(_interval);
+ _cookie = new object();
+ _timer = new Threading.Timer(_callback, _cookie, i, _autoReset ? i : Timeout.Infinite);
+ }
+ else
+ {
+ UpdateTimer();
+ }
+ }
+
+ }
+ }
+ }
+
+
+ private void UpdateTimer()
+ {
+ int i = (int)Math.Ceiling(_interval);
+ _timer.Change(i, _autoReset ? i : Timeout.Infinite);
+ }
+
+ /// <summary>
+ /// <para>Gets or
+ /// sets the interval on which
+ /// to raise events.</para>
+ /// </summary>
+ [TimersDescription(nameof(SR.TimerInterval), null), DefaultValue(100d)]
+ public double Interval
+ {
+ get
+ {
+ return _interval;
+ }
+
+ set
+ {
+ if (value <= 0)
+ throw new ArgumentException(SR.Format(SR.TimerInvalidInterval, value, 0));
+
+ _interval = value;
+ if (_timer != null)
+ {
+ UpdateTimer();
+ }
+ }
+ }
+
+
+ /// <summary>
+ /// <para>Occurs when the <see cref='System.Timers.Timer.Interval'/> has
+ /// elapsed.</para>
+ /// </summary>
+ [TimersDescription(nameof(SR.TimerIntervalElapsed), null)]
+ public event ElapsedEventHandler Elapsed
+ {
+ add
+ {
+ _onIntervalElapsed += value;
+ }
+ remove
+ {
+ _onIntervalElapsed -= value;
+ }
+ }
+
+ /// <summary>
+ /// <para>
+ /// Sets the enable property in design mode to true by default.
+ /// </para>
+ /// </summary>
+ /// <internalonly/>
+ public override ISite Site
+ {
+ set
+ {
+ base.Site = value;
+ if (DesignMode)
+ _enabled = true;
+ }
+
+ get
+ {
+ return base.Site;
+ }
+ }
+
+
+ /// <summary>
+ /// <para>Gets or sets the object used to marshal event-handler calls that are issued when
+ /// an interval has elapsed.</para>
+ /// </summary>
+ [DefaultValue(null), TimersDescription(nameof(SR.TimerSynchronizingObject), null)]
+ public ISynchronizeInvoke SynchronizingObject
+ {
+ get
+ {
+ if (_synchronizingObject == null && DesignMode)
+ {
+ IDesignerHost host = (IDesignerHost)GetService(typeof(IDesignerHost));
+ if (host != null)
+ {
+ object baseComponent = host.RootComponent;
+ if (baseComponent != null && baseComponent is ISynchronizeInvoke)
+ _synchronizingObject = (ISynchronizeInvoke)baseComponent;
+ }
+ }
+
+ return _synchronizingObject;
+ }
+
+ set
+ {
+ _synchronizingObject = value;
+ }
+ }
+
+ /// <summary>
+ /// <para>
+ /// Notifies
+ /// the object that initialization is beginning and tells it to stand by.
+ /// </para>
+ /// </summary>
+ public void BeginInit()
+ {
+ Close();
+ _initializing = true;
+ }
+
+ /// <summary>
+ /// <para>Disposes of the resources (other than memory) used by
+ /// the <see cref='System.Timers.Timer'/>.</para>
+ /// </summary>
+ public void Close()
+ {
+ _initializing = false;
+ _delayedEnable = false;
+ _enabled = false;
+
+ if (_timer != null)
+ {
+ _timer.Dispose();
+ _timer = null;
+ }
+ }
+
+ protected override void Dispose(bool disposing)
+ {
+ Close();
+ _disposed = true;
+ base.Dispose(disposing);
+ }
+
+ /// <summary>
+ /// <para>
+ /// Notifies the object that initialization is complete.
+ /// </para>
+ /// </summary>
+ public void EndInit()
+ {
+ _initializing = false;
+ Enabled = _delayedEnable;
+ }
+
+ /// <summary>
+ /// <para>Starts the timing by setting <see cref='System.Timers.Timer.Enabled'/> to <see langword='true'/>.</para>
+ /// </summary>
+ public void Start()
+ {
+ Enabled = true;
+ }
+
+ /// <summary>
+ /// <para>
+ /// Stops the timing by setting <see cref='System.Timers.Timer.Enabled'/> to <see langword='false'/>.
+ /// </para>
+ /// </summary>
+ public void Stop()
+ {
+ Enabled = false;
+ }
+
+ private void MyTimerCallback(object state)
+ {
+ // System.Threading.Timer will not cancel the work item queued before the timer is stopped.
+ // We don't want to handle the callback after a timer is stopped.
+ if (state != _cookie)
+ {
+ return;
+ }
+
+ if (!_autoReset)
+ {
+ _enabled = false;
+ }
+
+ ElapsedEventArgs elapsedEventArgs = new ElapsedEventArgs(DateTime.UtcNow.ToFileTime());
+ try
+ {
+ // To avoid race between remove handler and raising the event
+ ElapsedEventHandler intervalElapsed = _onIntervalElapsed;
+ if (intervalElapsed != null)
+ {
+ if (SynchronizingObject != null && SynchronizingObject.InvokeRequired)
+ SynchronizingObject.BeginInvoke(intervalElapsed, new object[] { this, elapsedEventArgs });
+ else
+ intervalElapsed(this, elapsedEventArgs);
+ }
+ }
+ catch
+ {
+ }
+ }
+ }
+}
+
diff --git a/src/System.ComponentModel.TypeConverter/src/System/Timers/TimersDescriptionAttribute.cs b/src/System.ComponentModel.TypeConverter/src/System/Timers/TimersDescriptionAttribute.cs
new file mode 100644
index 0000000000..aa8ec31b6d
--- /dev/null
+++ b/src/System.ComponentModel.TypeConverter/src/System/Timers/TimersDescriptionAttribute.cs
@@ -0,0 +1,46 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.ComponentModel;
+
+namespace System.Timers
+{
+ /// <summary>
+ /// DescriptionAttribute marks a property, event, or extender with a
+ /// description. Visual designers can display this description when referencing
+ /// the member.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.All)]
+ public class TimersDescriptionAttribute : DescriptionAttribute
+ {
+ private bool replaced = false;
+
+ /// <summary>
+ /// Constructs a new sys description.
+ /// </summary>
+ public TimersDescriptionAttribute(string description) : base(description) { }
+
+ /// <summary>
+ /// Constructs a new localized sys description.
+ /// </summary>
+ internal TimersDescriptionAttribute(string description, string defaultValue) : base(SR.GetResourceString(description, defaultValue)) { }
+
+ /// <summary>
+ /// Retrieves the description text.
+ /// </summary>
+ public override string Description
+ {
+ get
+ {
+ if (!replaced)
+ {
+ replaced = true;
+ DescriptionValue = SR.Format(base.Description);
+ }
+ return base.Description;
+ }
+ }
+ }
+}
diff --git a/src/System.ComponentModel.TypeConverter/src/project.json b/src/System.ComponentModel.TypeConverter/src/project.json
index 7a57f7a92b..fb834cec7b 100644
--- a/src/System.ComponentModel.TypeConverter/src/project.json
+++ b/src/System.ComponentModel.TypeConverter/src/project.json
@@ -1,59 +1,35 @@
{
- "frameworks": {
- "netstandard1.5": {
- "dependencies": {
- "System.Collections": "4.0.0",
- "System.Collections.NonGeneric": "4.0.0",
- "System.Collections.Specialized": "4.0.0",
- "System.ComponentModel": "4.0.0",
- "System.ComponentModel.Primitives": "4.1.0",
- "System.Diagnostics.Contracts": "4.0.0",
- "System.Diagnostics.Debug": "4.0.10",
- "System.Diagnostics.Tools": "4.0.0",
- "System.Globalization": "4.0.0",
- "System.Linq": "4.0.0",
- "System.Reflection": "4.1.0",
- "System.Reflection.Extensions": "4.0.0",
- "System.Reflection.TypeExtensions": "4.1.0",
- "System.Resources.ResourceManager": "4.0.0",
- "System.Runtime": "4.0.20",
- "System.Runtime.Extensions": "4.0.0",
- "System.Threading": "4.0.10"
- },
- "imports": [
- "dotnet5.6"
- ]
- },
- "netstandard1.0": {
- "dependencies": {
- "System.Collections": "4.0.0",
- "System.ComponentModel": "4.0.0",
- "System.ComponentModel.Primitives": "4.1.0",
- "System.Diagnostics.Contracts": "4.0.0",
- "System.Diagnostics.Debug": "4.0.0",
- "System.Diagnostics.Tools": "4.0.0",
- "System.Globalization": "4.0.0",
- "System.Reflection": "4.0.0",
- "System.Reflection.Extensions": "4.0.0",
- "System.Reflection.Primitives": "4.0.0",
- "System.Resources.ResourceManager": "4.0.0",
- "System.Runtime": "4.0.0",
- "System.Runtime.Extensions": "4.0.0",
- "System.Threading": "4.0.0"
- },
- "imports": [
- "dotnet5.1"
- ]
- },
- "net462": {
- "dependencies": {
- "Microsoft.TargetingPack.NETFramework.v4.6.2": "1.0.1"
- }
- },
- "net45": {
- "dependencies": {
- "Microsoft.TargetingPack.NETFramework.v4.5": "1.0.1"
- }
+ "frameworks": {
+ "netstandard1.7": {
+ "dependencies": {
+ "System.Collections": "4.0.0",
+ "System.Collections.NonGeneric": "4.0.0",
+ "System.Collections.Specialized": "4.0.0",
+ "System.ComponentModel": "4.0.0",
+ "System.ComponentModel.Primitives": "4.1.0",
+ "System.Diagnostics.Contracts": "4.0.0",
+ "System.Diagnostics.Debug": "4.0.10",
+ "System.Diagnostics.Tools": "4.0.0",
+ "System.Globalization": "4.0.0",
+ "System.Linq": "4.0.0",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Extensions": "4.0.0",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.0",
+ "System.Runtime": "4.0.20",
+ "System.Runtime.Extensions": "4.0.0",
+ "System.Security.Permissions": "4.3.0-beta-devapi-24512-01",
+ "System.Threading": "4.0.10",
+ "System.Threading.Timer": "4.0.0"
+ },
+ "imports": [
+ "dotnet5.8"
+ ]
+ },
+ "net463": {
+ "dependencies": {
+ "Microsoft.TargetingPack.NETFramework.v4.6": "1.0.1"
+ }
+ }
}
- }
}
diff --git a/src/System.ComponentModel.TypeConverter/tests/System.ComponentModel.TypeConverter.Tests.builds b/src/System.ComponentModel.TypeConverter/tests/System.ComponentModel.TypeConverter.Tests.builds
index 659dc14d21..764e1e03cc 100644
--- a/src/System.ComponentModel.TypeConverter/tests/System.ComponentModel.TypeConverter.Tests.builds
+++ b/src/System.ComponentModel.TypeConverter/tests/System.ComponentModel.TypeConverter.Tests.builds
@@ -7,6 +7,10 @@
<TestTFMs>net462;net463</TestTFMs>
<OSGroup>Windows_NT</OSGroup>
</Project>
+ <Project Include="System.ComponentModel.TypeConverter.Tests.csproj">
+ <TargetGroup>netstandard1.7</TargetGroup>
+ <TestTFMs>netcoreapp1.1</TestTFMs>
+ </Project>
<Project Include="Performance\System.ComponentModel.TypeConverter.Performance.Tests.csproj"/>
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.traversal.targets))\dir.traversal.targets" />
diff --git a/src/System.ComponentModel.TypeConverter/tests/System.ComponentModel.TypeConverter.Tests.csproj b/src/System.ComponentModel.TypeConverter/tests/System.ComponentModel.TypeConverter.Tests.csproj
index 2a3b8ae4d6..c972549468 100644
--- a/src/System.ComponentModel.TypeConverter/tests/System.ComponentModel.TypeConverter.Tests.csproj
+++ b/src/System.ComponentModel.TypeConverter/tests/System.ComponentModel.TypeConverter.Tests.csproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
<PropertyGroup>
@@ -8,9 +8,14 @@
<ProjectGuid>{3F0326A1-9E19-4A6C-95CE-63E65C9D2030}</ProjectGuid>
<RootNamespace>System.ComponentModel.TypeConverter.Tests</RootNamespace>
<AssemblyName>System.ComponentModel.TypeConverter.Tests</AssemblyName>
- <NugetTargetMoniker>.NETStandard,Version=v1.5</NugetTargetMoniker>
+ <NugetTargetMoniker Condition="'$(NugetTargetMoniker)'==''">.NETStandard,Version=v1.5</NugetTargetMoniker>
<DefineConstants>$(DefineConstants);FUNCTIONAL_TESTS</DefineConstants>
</PropertyGroup>
+ <ItemGroup Condition="'$(TargetGroup)'=='netstandard1.7'">
+ <TestNugetTargetMoniker Include="$(NugetTargetMoniker)">
+ <Folder>netcoreapp1.1</Folder>
+ </TestNugetTargetMoniker>
+ </ItemGroup>
<PropertyGroup>
<DebugEngines>{2E36F1D4-B23C-435D-AB41-18E608940038}</DebugEngines>
</PropertyGroup>
@@ -56,6 +61,7 @@
<Compile Include="SByteConverterTests.cs" />
<Compile Include="SingleConverterTests.cs" />
<Compile Include="StringConverterTests.cs" />
+ <Compile Include="TimerTests.cs" />
<Compile Include="TimeSpanConverterTests.cs" />
<Compile Include="TypeConverterAttributeTests.cs" />
<Compile Include="TypeConverterTests.cs" />
diff --git a/src/System.ComponentModel.TypeConverter/tests/TimerTests.cs b/src/System.ComponentModel.TypeConverter/tests/TimerTests.cs
new file mode 100644
index 0000000000..fbf2e0d8bc
--- /dev/null
+++ b/src/System.ComponentModel.TypeConverter/tests/TimerTests.cs
@@ -0,0 +1,15 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using Xunit;
+using System.Threading;
+using System.Timers;
+
+namespace System.Timers.Tests
+{
+ public class TimerTests
+ {
+
+ }
+}
diff --git a/src/System.ComponentModel.TypeConverter/tests/project.json b/src/System.ComponentModel.TypeConverter/tests/project.json
index d951c2f6e0..f318562870 100644
--- a/src/System.ComponentModel.TypeConverter/tests/project.json
+++ b/src/System.ComponentModel.TypeConverter/tests/project.json
@@ -1,30 +1,48 @@
{
- "dependencies": {
- "Microsoft.NETCore.Platforms": "4.3.0-beta-devapi-24512-01",
- "System.ComponentModel.TypeConverter": "4.3.0-beta-devapi-24512-01",
- "System.Collections.NonGeneric": "4.3.0-beta-devapi-24512-01",
- "System.Collections.Specialized": "4.3.0-beta-devapi-24512-01",
- "System.ComponentModel.Primitives": "4.3.0-beta-devapi-24512-01",
- "System.Globalization": "4.3.0-beta-devapi-24512-01",
- "System.Linq.Expressions": "4.3.0-beta-devapi-24512-01",
- "System.ObjectModel": "4.3.0-beta-devapi-24512-01",
- "System.Runtime": "4.3.0-beta-devapi-24512-01",
- "System.Text.RegularExpressions": "4.3.0-beta-devapi-24512-01",
- "System.Threading.Tasks": "4.3.0-beta-devapi-24512-01",
- "test-runtime": {
- "target": "project",
- "exclude": "compile"
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "4.3.0-beta-devapi-24512-01",
+ "System.Collections.NonGeneric": "4.3.0-beta-devapi-24512-01",
+ "System.Collections.Specialized": "4.3.0-beta-devapi-24512-01",
+ "System.ComponentModel.Primitives": "4.3.0-beta-devapi-24512-01",
+ "System.Globalization": "4.3.0-beta-devapi-24512-01",
+ "System.Linq.Expressions": "4.3.0-beta-devapi-24512-01",
+ "System.ObjectModel": "4.3.0-beta-devapi-24512-01",
+ "System.Reflection": "4.3.0-beta-devapi-24512-01",
+ "System.Runtime": "4.3.0-beta-devapi-24512-01",
+ "System.Text.RegularExpressions": "4.3.0-beta-devapi-24512-01",
+ "System.Threading.Thread": "4.3.0-beta-devapi-24512-01",
+ "System.Threading.Tasks": "4.3.0-beta-devapi-24512-01",
+ "test-runtime": {
+ "target": "project",
+ "exclude": "compile"
+ },
+ "Microsoft.xunit.netcore.extensions": "1.0.0-prerelease-00807-03",
+ "Microsoft.DotNet.BuildTools.TestSuite": "1.0.0-prerelease-00807-03",
+ "Microsoft.DotNet.xunit.performance": "1.0.0-alpha-build0039"
},
- "Microsoft.xunit.netcore.extensions": "1.0.0-prerelease-00807-03",
- "Microsoft.DotNet.BuildTools.TestSuite": "1.0.0-prerelease-00807-03",
- "Microsoft.DotNet.xunit.performance": "1.0.0-alpha-build0039"
- },
- "frameworks": {
- "netstandard1.5": {}
- },
- "supports": {
- "coreFx.Test.netcoreapp1.0": {},
- "coreFx.Test.net462": {},
- "coreFx.Test.net463": {}
- }
+ "frameworks": {
+ "netstandard1.5": {},
+ "netstandard1.7": {}
+ },
+ "supports": {
+ "coreFx.Test.netcoreapp1.0": {},
+ "coreFx.Test.net462": {},
+ "coreFx.Test.net463": {},
+ "coreFx.Test.netcoreapp1.1-ns17": {
+ "netstandard1.7": [
+ "win7-x86",
+ "win7-x64",
+ "win10-arm64",
+ "osx.10.10-x64",
+ "centos.7-x64",
+ "debian.8-x64",
+ "rhel.7-x64",
+ "ubuntu.14.04-x64",
+ "ubuntu.16.04-x64",
+ "fedora.23-x64",
+ "linux-x64",
+ "opensuse.13.2-x64"
+ ]
+ }
+ }
}