Skip to content

Commit 489dae4

Browse files
committed
refactor: changed ManualTimer to be public visible
1 parent f5994b0 commit 489dae4

9 files changed

+505
-182
lines changed

docs/TimeProviderExtensions.ManualTimeProvider.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ The provider is set to not automatically advance time each time it is read.
8282

8383
## ManualTimeProvider.ActiveTimers Property
8484

85-
Gets the number of active [TimeProviderExtensions.ManualTimeProvider.ManualTimer](https://docs.microsoft.com/en-us/dotnet/api/TimeProviderExtensions.ManualTimeProvider.ManualTimer 'TimeProviderExtensions.ManualTimeProvider.ManualTimer'), that have callbacks that are scheduled to be triggered at some point in the future.
85+
Gets the number of active [ManualTimer](TimeProviderExtensions.ManualTimer.md 'TimeProviderExtensions.ManualTimer'), that have callbacks that are scheduled to be triggered at some point in the future.
8686

8787
```csharp
8888
public int ActiveTimers { get; }
Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
#### [TimeProviderExtensions](index.md 'index')
2+
### [TimeProviderExtensions](index.md#TimeProviderExtensions 'TimeProviderExtensions')
3+
4+
## ManualTimer Class
5+
6+
A implementaiton of a [System.Threading.ITimer](https://docs.microsoft.com/en-us/dotnet/api/System.Threading.ITimer 'System.Threading.ITimer') whose callbacks are scheduled via a [ManualTimeProvider](TimeProviderExtensions.ManualTimeProvider.md 'TimeProviderExtensions.ManualTimeProvider').
7+
8+
```csharp
9+
public class ManualTimer :
10+
System.Threading.ITimer,
11+
System.IDisposable,
12+
System.IAsyncDisposable
13+
```
14+
15+
Inheritance [System.Object](https://docs.microsoft.com/en-us/dotnet/api/System.Object 'System.Object') 🡒 ManualTimer
16+
17+
Implements [System.Threading.ITimer](https://docs.microsoft.com/en-us/dotnet/api/System.Threading.ITimer 'System.Threading.ITimer'), [System.IDisposable](https://docs.microsoft.com/en-us/dotnet/api/System.IDisposable 'System.IDisposable'), [System.IAsyncDisposable](https://docs.microsoft.com/en-us/dotnet/api/System.IAsyncDisposable 'System.IAsyncDisposable')
18+
### Constructors
19+
20+
<a name='TimeProviderExtensions.ManualTimer.ManualTimer(System.Threading.TimerCallback,object,TimeProviderExtensions.ManualTimeProvider)'></a>
21+
22+
## ManualTimer(TimerCallback, object, ManualTimeProvider) Constructor
23+
24+
Creates an instance of the [ManualTimer](TimeProviderExtensions.ManualTimer.md 'TimeProviderExtensions.ManualTimer'). No callbacks are scheduled during construction. Call [Change(TimeSpan, TimeSpan)](TimeProviderExtensions.ManualTimer.md#TimeProviderExtensions.ManualTimer.Change(System.TimeSpan,System.TimeSpan) 'TimeProviderExtensions.ManualTimer.Change(System.TimeSpan, System.TimeSpan)') to schedule invocations of [callback](TimeProviderExtensions.ManualTimer.md#TimeProviderExtensions.ManualTimer.ManualTimer(System.Threading.TimerCallback,object,TimeProviderExtensions.ManualTimeProvider).callback 'TimeProviderExtensions.ManualTimer.ManualTimer(System.Threading.TimerCallback, object, TimeProviderExtensions.ManualTimeProvider).callback') using the provided [timeProvider](TimeProviderExtensions.ManualTimer.md#TimeProviderExtensions.ManualTimer.ManualTimer(System.Threading.TimerCallback,object,TimeProviderExtensions.ManualTimeProvider).timeProvider 'TimeProviderExtensions.ManualTimer.ManualTimer(System.Threading.TimerCallback, object, TimeProviderExtensions.ManualTimeProvider).timeProvider').
25+
26+
```csharp
27+
protected internal ManualTimer(System.Threading.TimerCallback callback, object? state, TimeProviderExtensions.ManualTimeProvider timeProvider);
28+
```
29+
#### Parameters
30+
31+
<a name='TimeProviderExtensions.ManualTimer.ManualTimer(System.Threading.TimerCallback,object,TimeProviderExtensions.ManualTimeProvider).callback'></a>
32+
33+
`callback` [System.Threading.TimerCallback](https://docs.microsoft.com/en-us/dotnet/api/System.Threading.TimerCallback 'System.Threading.TimerCallback')
34+
35+
A delegate representing a method to be executed when the timer fires. The method specified for callback should be reentrant,
36+
as it may be invoked simultaneously on two threads if the timer fires again before or while a previous callback is still being handled.
37+
38+
<a name='TimeProviderExtensions.ManualTimer.ManualTimer(System.Threading.TimerCallback,object,TimeProviderExtensions.ManualTimeProvider).state'></a>
39+
40+
`state` [System.Object](https://docs.microsoft.com/en-us/dotnet/api/System.Object 'System.Object')
41+
42+
An object to be passed to the [callback](TimeProviderExtensions.ManualTimer.md#TimeProviderExtensions.ManualTimer.ManualTimer(System.Threading.TimerCallback,object,TimeProviderExtensions.ManualTimeProvider).callback 'TimeProviderExtensions.ManualTimer.ManualTimer(System.Threading.TimerCallback, object, TimeProviderExtensions.ManualTimeProvider).callback'). This may be null.
43+
44+
<a name='TimeProviderExtensions.ManualTimer.ManualTimer(System.Threading.TimerCallback,object,TimeProviderExtensions.ManualTimeProvider).timeProvider'></a>
45+
46+
`timeProvider` [ManualTimeProvider](TimeProviderExtensions.ManualTimeProvider.md 'TimeProviderExtensions.ManualTimeProvider')
47+
48+
The [ManualTimeProvider](TimeProviderExtensions.ManualTimeProvider.md 'TimeProviderExtensions.ManualTimeProvider') which is used to schedule invocations of the [callback](TimeProviderExtensions.ManualTimer.md#TimeProviderExtensions.ManualTimer.ManualTimer(System.Threading.TimerCallback,object,TimeProviderExtensions.ManualTimeProvider).callback 'TimeProviderExtensions.ManualTimer.ManualTimer(System.Threading.TimerCallback, object, TimeProviderExtensions.ManualTimeProvider).callback') with.
49+
### Properties
50+
51+
<a name='TimeProviderExtensions.ManualTimer.CallbackTime'></a>
52+
53+
## ManualTimer.CallbackTime Property
54+
55+
Gets the next time the timer callback will be invoked, or `null` if the timer is inactive.
56+
57+
```csharp
58+
public System.Nullable<System.DateTimeOffset> CallbackTime { get; }
59+
```
60+
61+
#### Property Value
62+
[System.Nullable&lt;](https://docs.microsoft.com/en-us/dotnet/api/System.Nullable-1 'System.Nullable`1')[System.DateTimeOffset](https://docs.microsoft.com/en-us/dotnet/api/System.DateTimeOffset 'System.DateTimeOffset')[&gt;](https://docs.microsoft.com/en-us/dotnet/api/System.Nullable-1 'System.Nullable`1')
63+
64+
<a name='TimeProviderExtensions.ManualTimer.DueTime'></a>
65+
66+
## ManualTimer.DueTime Property
67+
68+
Gets the [System.TimeSpan](https://docs.microsoft.com/en-us/dotnet/api/System.TimeSpan 'System.TimeSpan') representing the amount of time to delay before invoking the callback method specified when the [System.Threading.ITimer](https://docs.microsoft.com/en-us/dotnet/api/System.Threading.ITimer 'System.Threading.ITimer') was constructed.
69+
70+
```csharp
71+
public System.TimeSpan DueTime { get; set; }
72+
```
73+
74+
#### Property Value
75+
[System.TimeSpan](https://docs.microsoft.com/en-us/dotnet/api/System.TimeSpan 'System.TimeSpan')
76+
77+
<a name='TimeProviderExtensions.ManualTimer.Period'></a>
78+
79+
## ManualTimer.Period Property
80+
81+
Gets the time interval between invocations of the callback method specified when the Timer was constructed.
82+
If set to [System.Threading.Timeout.InfiniteTimeSpan](https://docs.microsoft.com/en-us/dotnet/api/System.Threading.Timeout.InfiniteTimeSpan 'System.Threading.Timeout.InfiniteTimeSpan') periodic signaling is disabled.
83+
84+
```csharp
85+
public System.TimeSpan Period { get; set; }
86+
```
87+
88+
#### Property Value
89+
[System.TimeSpan](https://docs.microsoft.com/en-us/dotnet/api/System.TimeSpan 'System.TimeSpan')
90+
### Methods
91+
92+
<a name='TimeProviderExtensions.ManualTimer.~ManualTimer()'></a>
93+
94+
## ManualTimer.~ManualTimer() Method
95+
96+
The finalizer exists in case the timer is not disposed explicitly by the user.
97+
98+
```csharp
99+
~ManualTimer();
100+
```
101+
102+
<a name='TimeProviderExtensions.ManualTimer.Change(System.TimeSpan,System.TimeSpan)'></a>
103+
104+
## ManualTimer.Change(TimeSpan, TimeSpan) Method
105+
106+
Changes the start time and the interval between method invocations for a timer, using [System.TimeSpan](https://docs.microsoft.com/en-us/dotnet/api/System.TimeSpan 'System.TimeSpan') values to measure time intervals.
107+
108+
```csharp
109+
public virtual bool Change(System.TimeSpan dueTime, System.TimeSpan period);
110+
```
111+
#### Parameters
112+
113+
<a name='TimeProviderExtensions.ManualTimer.Change(System.TimeSpan,System.TimeSpan).dueTime'></a>
114+
115+
`dueTime` [System.TimeSpan](https://docs.microsoft.com/en-us/dotnet/api/System.TimeSpan 'System.TimeSpan')
116+
117+
A [System.TimeSpan](https://docs.microsoft.com/en-us/dotnet/api/System.TimeSpan 'System.TimeSpan') representing the amount of time to delay before invoking the callback method specified when the [System.Threading.ITimer](https://docs.microsoft.com/en-us/dotnet/api/System.Threading.ITimer 'System.Threading.ITimer') was constructed.
118+
Specify [System.Threading.Timeout.InfiniteTimeSpan](https://docs.microsoft.com/en-us/dotnet/api/System.Threading.Timeout.InfiniteTimeSpan 'System.Threading.Timeout.InfiniteTimeSpan') to prevent the timer from restarting. Specify [System.TimeSpan.Zero](https://docs.microsoft.com/en-us/dotnet/api/System.TimeSpan.Zero 'System.TimeSpan.Zero') to restart the timer immediately.
119+
120+
<a name='TimeProviderExtensions.ManualTimer.Change(System.TimeSpan,System.TimeSpan).period'></a>
121+
122+
`period` [System.TimeSpan](https://docs.microsoft.com/en-us/dotnet/api/System.TimeSpan 'System.TimeSpan')
123+
124+
The time interval between invocations of the callback method specified when the Timer was constructed.
125+
Specify [System.Threading.Timeout.InfiniteTimeSpan](https://docs.microsoft.com/en-us/dotnet/api/System.Threading.Timeout.InfiniteTimeSpan 'System.Threading.Timeout.InfiniteTimeSpan') to disable periodic signaling.
126+
127+
Implements [Change(TimeSpan, TimeSpan)](https://docs.microsoft.com/en-us/dotnet/api/System.Threading.ITimer.Change#System_Threading_ITimer_Change_System_TimeSpan,System_TimeSpan_ 'System.Threading.ITimer.Change(System.TimeSpan,System.TimeSpan)')
128+
129+
#### Returns
130+
[System.Boolean](https://docs.microsoft.com/en-us/dotnet/api/System.Boolean 'System.Boolean')
131+
[true](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/bool 'https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/bool') if the timer was successfully updated; otherwise, [false](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/bool 'https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/bool').
132+
133+
#### Exceptions
134+
135+
[System.ArgumentOutOfRangeException](https://docs.microsoft.com/en-us/dotnet/api/System.ArgumentOutOfRangeException 'System.ArgumentOutOfRangeException')
136+
The [dueTime](TimeProviderExtensions.ManualTimer.md#TimeProviderExtensions.ManualTimer.Change(System.TimeSpan,System.TimeSpan).dueTime 'TimeProviderExtensions.ManualTimer.Change(System.TimeSpan, System.TimeSpan).dueTime') or [period](TimeProviderExtensions.ManualTimer.md#TimeProviderExtensions.ManualTimer.Change(System.TimeSpan,System.TimeSpan).period 'TimeProviderExtensions.ManualTimer.Change(System.TimeSpan, System.TimeSpan).period') parameter, in milliseconds, is less than -1 or greater than 4294967294.
137+
138+
### Remarks
139+
It is the responsibility of the implementer of the ITimer interface to ensure thread safety.
140+
141+
<a name='TimeProviderExtensions.ManualTimer.Dispose()'></a>
142+
143+
## ManualTimer.Dispose() Method
144+
145+
Disposes of the [ManualTimer](TimeProviderExtensions.ManualTimer.md 'TimeProviderExtensions.ManualTimer') and removes any scheduled callbacks from the [ManualTimeProvider](TimeProviderExtensions.ManualTimeProvider.md 'TimeProviderExtensions.ManualTimeProvider').
146+
147+
```csharp
148+
public void Dispose();
149+
```
150+
151+
Implements [Dispose()](https://docs.microsoft.com/en-us/dotnet/api/System.IDisposable.Dispose 'System.IDisposable.Dispose')
152+
153+
<a name='TimeProviderExtensions.ManualTimer.Dispose(bool)'></a>
154+
155+
## ManualTimer.Dispose(bool) Method
156+
157+
Disposes of the [ManualTimer](TimeProviderExtensions.ManualTimer.md 'TimeProviderExtensions.ManualTimer') and removes any scheduled callbacks from the [ManualTimeProvider](TimeProviderExtensions.ManualTimeProvider.md 'TimeProviderExtensions.ManualTimeProvider').
158+
159+
```csharp
160+
protected virtual void Dispose(bool disposing);
161+
```
162+
#### Parameters
163+
164+
<a name='TimeProviderExtensions.ManualTimer.Dispose(bool).disposing'></a>
165+
166+
`disposing` [System.Boolean](https://docs.microsoft.com/en-us/dotnet/api/System.Boolean 'System.Boolean')
167+
168+
### Remarks
169+
If this method is overridden, it should always be called by the overriding method.
170+
171+
<a name='TimeProviderExtensions.ManualTimer.DisposeAsync()'></a>
172+
173+
## ManualTimer.DisposeAsync() Method
174+
175+
Disposes of the [ManualTimer](TimeProviderExtensions.ManualTimer.md 'TimeProviderExtensions.ManualTimer') and removes any scheduled callbacks from the [ManualTimeProvider](TimeProviderExtensions.ManualTimeProvider.md 'TimeProviderExtensions.ManualTimeProvider').
176+
177+
```csharp
178+
public System.Threading.Tasks.ValueTask DisposeAsync();
179+
```
180+
181+
Implements [DisposeAsync()](https://docs.microsoft.com/en-us/dotnet/api/System.IAsyncDisposable.DisposeAsync 'System.IAsyncDisposable.DisposeAsync')
182+
183+
#### Returns
184+
[System.Threading.Tasks.ValueTask](https://docs.microsoft.com/en-us/dotnet/api/System.Threading.Tasks.ValueTask 'System.Threading.Tasks.ValueTask')
185+
186+
<a name='TimeProviderExtensions.ManualTimer.ToString()'></a>
187+
188+
## ManualTimer.ToString() Method
189+
190+
Returns a string that represents the current object.
191+
192+
```csharp
193+
public override string ToString();
194+
```
195+
196+
#### Returns
197+
[System.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System.String')
198+
A string that represents the current object.

docs/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,4 @@
1919
| Classes | |
2020
| :--- | :--- |
2121
| [ManualTimeProvider](TimeProviderExtensions.ManualTimeProvider.md 'TimeProviderExtensions.ManualTimeProvider') | Represents a synthetic time provider that can be used to enable deterministic behavior in tests. |
22+
| [ManualTimer](TimeProviderExtensions.ManualTimer.md 'TimeProviderExtensions.ManualTimer') | A implementaiton of a [System.Threading.ITimer](https://docs.microsoft.com/en-us/dotnet/api/System.Threading.ITimer 'System.Threading.ITimer') whose callbacks are scheduled via a [ManualTimeProvider](TimeProviderExtensions.ManualTimeProvider.md 'TimeProviderExtensions.ManualTimeProvider'). |

src/TimeProviderExtensions/ManualTimeProvider.ManualTimer.cs

Lines changed: 0 additions & 90 deletions
This file was deleted.

src/TimeProviderExtensions/ManualTimeProvider.ManualTimerScheduledCallback.cs

Lines changed: 0 additions & 86 deletions
This file was deleted.

0 commit comments

Comments
 (0)