Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ CloseAsync()

ValueTask System.Threading.TimerQueueTimer.CloseAsync ( )
inline

Definition at line 191 of file TimerQueueTimer.cs.

192 {
194 {
195 object notifyWhenNoCallbacksRunning = _notifyWhenNoCallbacksRunning;
196 if (_canceled)
197 {
198 if (notifyWhenNoCallbacksRunning is WaitHandle)
199 {
200 InvalidOperationException ex = new InvalidOperationException(SR.InvalidOperation_TimerAlreadyClosed);
201 ex.SetCurrentStackTrace();
202 return ValueTask.FromException(ex);
203 }
204 }
205 else
206 {
207 _canceled = true;
209 }
210 if (_callbacksRunning == 0)
211 {
212 return default(ValueTask);
213 }
214 if (notifyWhenNoCallbacksRunning == null)
215 {
216 return new ValueTask((Task)(_notifyWhenNoCallbacksRunning = new Task(null, TaskCreationOptions.RunContinuationsAsynchronously, promiseStyle: true)));
217 }
218 return new ValueTask((Task)notifyWhenNoCallbacksRunning);
219 }
220 }
readonly TimerQueue _associatedTimerQueue
void DeleteTimer(TimerQueueTimer timer)
static ValueTask FromException(Exception exception)
Definition ValueTask.cs:190

References System.Threading.TimerQueueTimer._associatedTimerQueue, System.Threading.TimerQueueTimer._callbacksRunning, System.Threading.TimerQueueTimer._canceled, System.Threading.TimerQueueTimer._notifyWhenNoCallbacksRunning, System.Threading.TimerQueue.DeleteTimer(), System.Threading.Tasks.ValueTask< TResult >.FromException(), System.SR.InvalidOperation_TimerAlreadyClosed, and System.Exception.SetCurrentStackTrace().

Referenced by System.Threading.TimerHolder.CloseAsync().