Shane32.AsyncResetEvents
2.4.1
See the version list below for details.
dotnet add package Shane32.AsyncResetEvents --version 2.4.1
NuGet\Install-Package Shane32.AsyncResetEvents -Version 2.4.1
<PackageReference Include="Shane32.AsyncResetEvents" Version="2.4.1" />
paket add Shane32.AsyncResetEvents --version 2.4.1
#r "nuget: Shane32.AsyncResetEvents, 2.4.1"
// Install Shane32.AsyncResetEvents as a Cake Addin #addin nuget:?package=Shane32.AsyncResetEvents&version=2.4.1 // Install Shane32.AsyncResetEvents as a Cake Tool #tool nuget:?package=Shane32.AsyncResetEvents&version=2.4.1
Shane32.AsyncResetEvents
AsyncAutoResetEvent
The methods match similar methods on AutoResetEvent
:
void Set(bool backgroundThread = false)
Task WaitAsync(CancellationToken cancellationToken = default)
Task<bool> WaitAsync(int millisecondsTimeout, CancellationToken cancellationToken = default)
Task<bool> WaitAsync(TimeSpan timeout, CancellationToken cancellationToken = default)
Calling Set
will execute waiting task continuation functions on the same thread by default.
Setting the backgroundThread
parameter will schedule them through the task scheduler.
WaitAsync
supports a timeout and cancellation token. If the cancellation token is triggered
before the reset event is signaled, a OperationCanceledException
is throw. If the timeout
occurs, false
is returned. If the reset event is signaled, true
is returned.
As an automatic reset event, calling WaitAsync
will reset the signal. Note that a queue
is maintained, and calling Set
will only allow a single waiting task continuation function
to execute. If no task continuation functions are waiting, calling Set
one or more times
will allow only the next call to WaitAsync
to execute. Additional calls to WaitAsync
will wait for an additional call to Set
.
AsyncManualResetEvent
The methods are identical to above, with the addition of the Reset
method.
void Set(bool backgroundThread = false)
void Reset()
Task WaitAsync(CancellationToken cancellationToken = default)
Task<bool> WaitAsync(int millisecondsTimeout, CancellationToken cancellationToken = default)
Task<bool> WaitAsync(TimeSpan timeout, CancellationToken cancellationToken = default)
As a manual reset event, calling WaitAsync
will wait until the event is signaled.
Signaling the event with Set
will result in the event staying signaled until Reset
is
called. As such, you may call WaitAsync
any number of times on a signaled event and
execution will continue. If the reset event is not signaled, you may call WaitAsync
any
number of times and they will all wait until Set
is called before executing.
AsyncMessagePump
Synchronizes execution of a sequence of asynchronous tasks. This maintains execution order
while allowing tasks to be posted asynchronously to the queue. The callback delegate may
be an asynchronous or synchronous delegate. Messages may be posted directly or an
asynchronous operation that returns a message may be posted to the queue. Regardless,
execution order is maintained as of the point in time that Post
was called, and
the callback is never run on multiple threads at once. If an asynchronous operation
was posted and it throws an exception, or if the callback throws an exception, the exception
is handled by the HandleErrorAsync
protected method, which can be overridden by a user in
a derived class. DrainAsync
is provided to wait for pending messages to be processed.
Constructors:
AsyncMessagePump(Func<T, Task> callback)
AsyncMessagePump(Action<T> callback)
Public methods:
void Post(T message)
void Post(Task<T> messageTask)
Task DrainAsync()
Public properties:
int Count { get; }
Protected methods:
Task HandleErrorAsync(Exception exception)
AsyncDelegatePump
Synchronizes executes of asynchronous delegates. Queued delegates executes in the order
that they were queued with a call to Post
. This class is derived from AsyncMessagePump
;
see above for further details. Also included is SendAsync
, which will queue an asynchronous
delegate and return its result after it executes (in its turn). Any further code after
awaiting a Task
returned by SendAsync
will not prevent additional delegates in the queue
from executing.
Public methods:
void Post(Func<Task> message)
void Post(Task<Func<Task>> messageTask)
(inherited; not typically used)Task SendAsync(Func<Task> action)
Task<T> SendAsync<T>(Func<Task<T>> action)
Task DrainAsync()
Public properties:
int Count { get; }
Protected methods:
Task HandleErrorAsync(Exception exception)
(not needed whenSendAsync
is used)
Credits
Glory to Jehovah, Lord of Lords and King of Kings, creator of Heaven and Earth, who through his Son Jesus Christ, has reedemed me to become a child of God. -Shane32
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp1.0 was computed. netcoreapp1.1 was computed. netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard1.0 is compatible. netstandard1.1 was computed. netstandard1.2 was computed. netstandard1.3 is compatible. netstandard1.4 was computed. netstandard1.5 was computed. netstandard1.6 was computed. netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net45 was computed. net451 was computed. net452 was computed. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen30 was computed. tizen40 was computed. tizen60 was computed. |
Universal Windows Platform | uap was computed. uap10.0 was computed. |
Windows Phone | wp8 was computed. wp81 was computed. wpa81 was computed. |
Windows Store | netcore was computed. netcore45 was computed. netcore451 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 1.0
- NETStandard.Library (>= 1.6.1)
-
.NETStandard 1.3
- NETStandard.Library (>= 1.6.1)
-
.NETStandard 2.0
- No dependencies.
-
.NETStandard 2.1
- No dependencies.
-
net5.0
- No dependencies.
-
net6.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.