Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
Progress.cs
Go to the documentation of this file.
2
3namespace System;
4
5public class Progress<T> : IProgress<T>
6{
8
9 private readonly Action<T> _handler;
10
11 private readonly SendOrPostCallback _invokeHandlers;
12
13 public event EventHandler<T>? ProgressChanged;
14
15 public Progress()
16 {
17 _synchronizationContext = SynchronizationContext.Current ?? ProgressStatics.DefaultContext;
19 }
20
21 public Progress(Action<T> handler)
22 : this()
23 {
24 _handler = handler ?? throw new ArgumentNullException("handler");
25 }
26
27 protected virtual void OnReport(T value)
28 {
29 Action<T> handler = _handler;
30 EventHandler<T> progressChanged = this.ProgressChanged;
31 if (handler != null || progressChanged != null)
32 {
34 }
35 }
36
38 {
40 }
41
42 private void InvokeHandlers(object state)
43 {
44 T val = (T)state;
45 Action<T> handler = _handler;
46 EventHandler<T> progressChanged = this.ProgressChanged;
47 handler?.Invoke(val);
48 progressChanged?.Invoke(this, val);
49 }
50}
static readonly SynchronizationContext DefaultContext
readonly SynchronizationContext _synchronizationContext
Definition Progress.cs:7
readonly Action< T > _handler
Definition Progress.cs:9
virtual void OnReport(T value)
Definition Progress.cs:27
EventHandler< T >? ProgressChanged
Definition Progress.cs:13
Progress(Action< T > handler)
Definition Progress.cs:21
void InvokeHandlers(object state)
Definition Progress.cs:42
readonly SendOrPostCallback _invokeHandlers
Definition Progress.cs:11
virtual void Post(SendOrPostCallback d, object? state)
void Report(T value)