|
| 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<](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')[>](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. |
0 commit comments