Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
PreAllocatedOverlapped.cs
Go to the documentation of this file.
1namespace System.Threading;
2
4{
6
8
9 [CLSCompliant(false)]
10 public PreAllocatedOverlapped(IOCompletionCallback callback, object? state, object? pinData)
11 : this(callback, state, pinData, flowExecutionContext: true)
12 {
13 }
14
15 [CLSCompliant(false)]
16 public static PreAllocatedOverlapped UnsafeCreate(IOCompletionCallback callback, object? state, object? pinData)
17 {
18 return new PreAllocatedOverlapped(callback, state, pinData, flowExecutionContext: false);
19 }
20
21 private PreAllocatedOverlapped(IOCompletionCallback callback, object state, object pinData, bool flowExecutionContext)
22 {
23 if (callback == null)
24 {
25 throw new ArgumentNullException("callback");
26 }
27 _overlapped = new ThreadPoolBoundHandleOverlapped(callback, state, pinData, this, flowExecutionContext);
28 }
29
30 internal bool AddRef()
31 {
32 return _lifetime.AddRef();
33 }
34
35 internal void Release()
36 {
37 _lifetime.Release(this);
38 }
39
40 public void Dispose()
41 {
42 _lifetime.Dispose(this);
43 GC.SuppressFinalize(this);
44 }
45
50
51 unsafe void IDeferredDisposable.OnFinalRelease(bool disposed)
52 {
53 if (_overlapped != null)
54 {
55 if (disposed)
56 {
58 return;
59 }
60 _overlapped._boundHandle = null;
61 _overlapped._completed = false;
62 *_overlapped._nativeOverlapped = default(NativeOverlapped);
63 }
64 }
65
66 internal bool IsUserObject(byte[] buffer)
67 {
69 }
70}
static void SuppressFinalize(object obj)
Definition GC.cs:202
Definition GC.cs:8
bool IsUserObject(byte[] buffer)
static unsafe void Free(NativeOverlapped *nativeOverlappedPtr)
readonly ThreadPoolBoundHandleOverlapped _overlapped
static PreAllocatedOverlapped UnsafeCreate(IOCompletionCallback callback, object? state, object? pinData)
PreAllocatedOverlapped(IOCompletionCallback callback, object state, object pinData, bool flowExecutionContext)
DeferredDisposableLifetime< PreAllocatedOverlapped > _lifetime
PreAllocatedOverlapped(IOCompletionCallback callback, object? state, object? pinData)
void OnFinalRelease(bool disposed)
unsafe delegate void IOCompletionCallback(uint errorCode, uint numBytes, NativeOverlapped *pOVERLAP)