Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
AsyncVoidMethodBuilder.cs
Go to the documentation of this file.
1
using
System.Diagnostics
;
2
using
System.Threading
;
3
using
System.Threading.Tasks
;
4
5
namespace
System.Runtime.CompilerServices
;
6
7
public
struct
AsyncVoidMethodBuilder
8
{
9
private
SynchronizationContext
_synchronizationContext
;
10
11
private
AsyncTaskMethodBuilder
_builder
;
12
13
private
Task
Task
=>
_builder
.
Task
;
14
15
internal
object
ObjectIdForDebugger
=>
_builder
.
ObjectIdForDebugger
;
16
17
public
static
AsyncVoidMethodBuilder
Create
()
18
{
19
SynchronizationContext
current =
SynchronizationContext
.
Current
;
20
current?.
OperationStarted
();
21
AsyncVoidMethodBuilder
result =
default
(
AsyncVoidMethodBuilder
);
22
result._synchronizationContext = current;
23
return
result;
24
}
25
26
[MethodImpl(
MethodImplOptions
.AggressiveInlining)]
27
[DebuggerStepThrough]
28
public
void
Start<TStateMachine>
(ref TStateMachine
stateMachine
) where TStateMachine :
IAsyncStateMachine
29
{
30
AsyncMethodBuilderCore
.Start(ref
stateMachine
);
31
}
32
33
public
void
SetStateMachine
(
IAsyncStateMachine
stateMachine
)
34
{
35
_builder
.
SetStateMachine
(
stateMachine
);
36
}
37
38
public
void
AwaitOnCompleted<TAwaiter, TStateMachine>
(ref TAwaiter awaiter, ref TStateMachine
stateMachine
) where TAwaiter :
INotifyCompletion
where TStateMachine :
IAsyncStateMachine
39
{
40
_builder
.AwaitOnCompleted(ref awaiter, ref
stateMachine
);
41
}
42
43
public
void
AwaitUnsafeOnCompleted<TAwaiter, TStateMachine>
(ref TAwaiter awaiter, ref TStateMachine
stateMachine
) where TAwaiter :
ICriticalNotifyCompletion
where TStateMachine :
IAsyncStateMachine
44
{
45
_builder
.AwaitUnsafeOnCompleted(ref awaiter, ref
stateMachine
);
46
}
47
48
public
void
SetResult
()
49
{
50
if
(
TplEventSource
.
Log
.IsEnabled())
51
{
52
TplEventSource
.
Log
.TraceOperationEnd(
Task
.
Id
,
AsyncCausalityStatus
.Completed);
53
}
54
_builder
.
SetResult
();
55
if
(
_synchronizationContext
!=
null
)
56
{
57
NotifySynchronizationContextOfCompletion
();
58
}
59
}
60
61
public
void
SetException
(
Exception
exception
)
62
{
63
if
(
exception
==
null
)
64
{
65
ThrowHelper
.
ThrowArgumentNullException
(
ExceptionArgument
.exception);
66
}
67
if
(
TplEventSource
.
Log
.IsEnabled())
68
{
69
TplEventSource
.
Log
.TraceOperationEnd(
Task
.
Id
,
AsyncCausalityStatus
.Error);
70
}
71
if
(
_synchronizationContext
!=
null
)
72
{
73
try
74
{
75
System
.
Threading
.
Tasks
.
Task
.
ThrowAsync
(
exception
,
_synchronizationContext
);
76
}
77
finally
78
{
79
NotifySynchronizationContextOfCompletion
();
80
}
81
}
82
else
83
{
84
System
.
Threading
.
Tasks
.
Task
.
ThrowAsync
(
exception
,
null
);
85
}
86
_builder
.
SetResult
();
87
}
88
89
private
void
NotifySynchronizationContextOfCompletion
()
90
{
91
try
92
{
93
_synchronizationContext
.
OperationCompleted
();
94
}
95
catch
(
Exception
exception
)
96
{
97
System
.
Threading
.
Tasks
.
Task
.
ThrowAsync
(
exception
,
null
);
98
}
99
}
100
}
System.Exception
Definition
Exception.cs:15
System.Runtime.CompilerServices.AsyncMethodBuilderCore
Definition
AsyncMethodBuilderCore.cs:12
System.Threading.SynchronizationContext.OperationStarted
virtual void OperationStarted()
Definition
SynchronizationContext.cs:37
System.Threading.SynchronizationContext.Current
static ? SynchronizationContext Current
Definition
SynchronizationContext.cs:7
System.Threading.SynchronizationContext.OperationCompleted
virtual void OperationCompleted()
Definition
SynchronizationContext.cs:41
System.Threading.SynchronizationContext
Definition
SynchronizationContext.cs:4
System.Threading.Tasks.Task.Id
int Id
Definition
Task.cs:997
System.Threading.Tasks.Task.ThrowAsync
static void ThrowAsync(Exception exception, SynchronizationContext targetContext)
Definition
Task.cs:1806
System.Threading.Tasks.Task
Definition
Task.cs:14
System.Threading.Tasks.TplEventSource.Log
static readonly TplEventSource Log
Definition
TplEventSource.cs:75
System.Threading.Tasks.TplEventSource
Definition
TplEventSource.cs:10
System.ThrowHelper.ThrowArgumentNullException
static void ThrowArgumentNullException(string name)
Definition
ThrowHelper.cs:14
System.ThrowHelper
Definition
ThrowHelper.cs:6
System.Runtime.CompilerServices.IAsyncStateMachine
Definition
IAsyncStateMachine.cs:4
System.Runtime.CompilerServices.ICriticalNotifyCompletion
Definition
ICriticalNotifyCompletion.cs:4
System.Runtime.CompilerServices.INotifyCompletion
Definition
INotifyCompletion.cs:4
System.Diagnostics
Definition
AggregationManager.cs:6
System.Runtime.CompilerServices.MethodImplOptions
MethodImplOptions
Definition
MethodImplOptions.cs:5
System.Runtime.CompilerServices
Definition
NullablePublicOnlyAttribute.cs:3
System.Threading.Tasks.AsyncCausalityStatus
AsyncCausalityStatus
Definition
AsyncCausalityStatus.cs:4
System.Threading.Tasks
Definition
TaskToApm.cs:3
System.Threading
Definition
TaskToApm.cs:3
System.ExceptionArgument
ExceptionArgument
Definition
ExceptionArgument.cs:4
System.ExceptionArgument.stateMachine
@ stateMachine
System.ExceptionArgument.exception
@ exception
System
Definition
BlockingCollection.cs:8
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Task
Task Task
Definition
AsyncTaskMethodBuilder.cs:14
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.ObjectIdForDebugger
object ObjectIdForDebugger
Definition
AsyncTaskMethodBuilder.cs:22
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetStateMachine
void SetStateMachine(IAsyncStateMachine stateMachine)
Definition
AsyncTaskMethodBuilder.cs:36
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetResult
void SetResult()
Definition
AsyncTaskMethodBuilder.cs:58
System.Runtime.CompilerServices.AsyncTaskMethodBuilder
Definition
AsyncTaskMethodBuilder.cs:81
System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Create
static AsyncVoidMethodBuilder Create()
Definition
AsyncVoidMethodBuilder.cs:17
System.Runtime.CompilerServices.AsyncVoidMethodBuilder.NotifySynchronizationContextOfCompletion
void NotifySynchronizationContextOfCompletion()
Definition
AsyncVoidMethodBuilder.cs:89
System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start< TStateMachine >
void Start< TStateMachine >(ref TStateMachine stateMachine)
Definition
AsyncVoidMethodBuilder.cs:28
System.Runtime.CompilerServices.AsyncVoidMethodBuilder.SetException
void SetException(Exception exception)
Definition
AsyncVoidMethodBuilder.cs:61
System.Runtime.CompilerServices.AsyncVoidMethodBuilder._synchronizationContext
SynchronizationContext _synchronizationContext
Definition
AsyncVoidMethodBuilder.cs:9
System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitOnCompleted< TAwaiter, TStateMachine >
void AwaitOnCompleted< TAwaiter, TStateMachine >(ref TAwaiter awaiter, ref TStateMachine stateMachine)
Definition
AsyncVoidMethodBuilder.cs:38
System.Runtime.CompilerServices.AsyncVoidMethodBuilder.SetResult
void SetResult()
Definition
AsyncVoidMethodBuilder.cs:48
System.Runtime.CompilerServices.AsyncVoidMethodBuilder.SetStateMachine
void SetStateMachine(IAsyncStateMachine stateMachine)
Definition
AsyncVoidMethodBuilder.cs:33
System.Runtime.CompilerServices.AsyncVoidMethodBuilder.ObjectIdForDebugger
object ObjectIdForDebugger
Definition
AsyncVoidMethodBuilder.cs:15
System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompleted< TAwaiter, TStateMachine >
void AwaitUnsafeOnCompleted< TAwaiter, TStateMachine >(ref TAwaiter awaiter, ref TStateMachine stateMachine)
Definition
AsyncVoidMethodBuilder.cs:43
System.Runtime.CompilerServices.AsyncVoidMethodBuilder._builder
AsyncTaskMethodBuilder _builder
Definition
AsyncVoidMethodBuilder.cs:11
System.Runtime.CompilerServices.AsyncVoidMethodBuilder
Definition
AsyncVoidMethodBuilder.cs:8
source
System.Private.CoreLib
System.Runtime.CompilerServices
AsyncVoidMethodBuilder.cs
Generated by
1.10.0