diff --git a/ArchiSteamFarm/ArchiSteamFarm.csproj b/ArchiSteamFarm/ArchiSteamFarm.csproj
index c8c077220..972b763e3 100644
--- a/ArchiSteamFarm/ArchiSteamFarm.csproj
+++ b/ArchiSteamFarm/ArchiSteamFarm.csproj
@@ -79,10 +79,34 @@
..\packages\HtmlAgilityPack.1.4.9.5\lib\Net45\HtmlAgilityPack.dll
True
+
+ ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll
+ True
+
+
+ ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll
+ True
+
+
+ ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll
+ True
+
..\packages\Newtonsoft.Json.9.0.2-beta2\lib\net45\Newtonsoft.Json.dll
True
+
+ ..\packages\Nito.AsyncEx.4.0.1\lib\net45\Nito.AsyncEx.dll
+ True
+
+
+ ..\packages\Nito.AsyncEx.4.0.1\lib\net45\Nito.AsyncEx.Concurrent.dll
+ True
+
+
+ ..\packages\Nito.AsyncEx.4.0.1\lib\net45\Nito.AsyncEx.Enlightenment.dll
+ True
+
..\packages\NLog.5.0.0-beta05-test\lib\net45\NLog.dll
True
@@ -99,6 +123,7 @@
+
@@ -263,10 +288,12 @@
+
+
+
+
+ true
+
+
+
+
+ false
+
+
+ $(ProjectConfigFileName)
+
+
+
+
+
+ <_FullFrameworkReferenceAssemblyPaths>$(TargetFrameworkDirectory)
+
+
+
+
+
+ <__IntermediateAppConfig>$(IntermediateOutputPath)$(MSBuildProjectFile).App.config
+ true
+
+
+
+ false
+ true
+
+
+
+
+ true
+ true
+
+
+
+
+
+
+
+
+ <_EnsureBindingRedirectReference Include="@(Reference)"
+ Condition="'%(Reference.HintPath)' != '' and Exists('$([System.IO.Path]::GetDirectoryName("%(Reference.HintPath)"))\\ensureRedirect.xml')" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(__IntermediateAppConfig)
+
+
+
+
+ $(TargetFileName).config
+
+
+
+
+
+
+
+
+
+
+ <_BclBuildProjectReferenceProperties>BclBuildReferencingProject=$(MSBuildProjectFullPath);BclBuildReferencingProjectConfig=$(MSBuildProjectDirectory)\packages.config
+ <_BclBuildProjectReferenceProperties Condition="'$(SkipValidatePackageReferences)' != ''">$(_BclBuildProjectReferenceProperties);SkipValidatePackageReferences=$(SkipValidatePackageReferences)
+
+
+
+
+ $(_BclBuildProjectReferenceProperties);%(ProjectReference.AdditionalProperties)
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/Nito.AsyncEx.4.0.1/Nito.AsyncEx.4.0.1.nupkg b/packages/Nito.AsyncEx.4.0.1/Nito.AsyncEx.4.0.1.nupkg
new file mode 100644
index 000000000..5d460d40d
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/Nito.AsyncEx.4.0.1.nupkg differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/MonoAndroid/Nito.AsyncEx.Concurrent.dll b/packages/Nito.AsyncEx.4.0.1/lib/MonoAndroid/Nito.AsyncEx.Concurrent.dll
new file mode 100644
index 000000000..8f91a729a
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/MonoAndroid/Nito.AsyncEx.Concurrent.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/MonoAndroid/Nito.AsyncEx.Concurrent.xml b/packages/Nito.AsyncEx.4.0.1/lib/MonoAndroid/Nito.AsyncEx.Concurrent.xml
new file mode 100644
index 000000000..497b59a89
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/MonoAndroid/Nito.AsyncEx.Concurrent.xml
@@ -0,0 +1,401 @@
+
+
+
+ Nito.AsyncEx.Concurrent
+
+
+
+
+ An async-compatible producer/consumer collection.
+
+ The type of elements contained in the collection.
+
+
+
+ The underlying collection.
+
+
+
+
+ The maximum number of elements allowed in the collection.
+
+
+
+
+ The mutual-exclusion lock protecting the collection.
+
+
+
+
+ A condition variable that is signalled when the collection is not full.
+
+
+
+
+ A condition variable that is signalled when the collection is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the collection is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer collection wrapping the specified collection and with a maximum element count.
+
+ The collection to wrap.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer collection wrapping the specified collection.
+
+ The collection to wrap.
+
+
+
+ Creates a new async-compatible producer/consumer collection with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer collection.
+
+
+
+
+ Whether the collection is empty.
+
+
+
+
+ Whether the collection is full.
+
+
+
+
+ Asynchronously marks the producer/consumer collection as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer collection as complete for adding.
+
+
+
+
+ Attempts to add an item.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related add operations. May be null if this is the only add operation.
+
+
+
+ Attempts to add an item. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer collection has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer collection has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer collection.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to take an item.
+
+ A cancellation token that can be used to abort the take operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related take operations. May be null if this is the only take operation.
+
+
+
+ Attempts to take an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection.
+
+
+
+
+ Attempts to take an item from the producer/consumer collection. This method may block the calling thread.
+
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed.
+
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed. This method may block the calling thread.
+
+
+
+
+ The result of a TryTake, TakeFromAny, or TryTakeFromAny operation.
+
+
+
+
+ The collection from which the item was taken, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The producer/consumer collections.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The producer/consumer collections.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The array of producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The array of producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The array of producer/consumer collections.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The array of producer/consumer collections.
+
+
+
+ A progress implementation that sends progress reports to a producer/consumer collection.
+
+ The type of progress value.
+
+
+
+ The producer/consumer collection that receives progress reports.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The producer/consumer collection that receives progress reports.
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/MonoAndroid/Nito.AsyncEx.Enlightenment.dll b/packages/Nito.AsyncEx.4.0.1/lib/MonoAndroid/Nito.AsyncEx.Enlightenment.dll
new file mode 100644
index 000000000..e21d38061
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/MonoAndroid/Nito.AsyncEx.Enlightenment.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/MonoAndroid/Nito.AsyncEx.Enlightenment.xml b/packages/Nito.AsyncEx.4.0.1/lib/MonoAndroid/Nito.AsyncEx.Enlightenment.xml
new file mode 100644
index 000000000..db9ce6e4a
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/MonoAndroid/Nito.AsyncEx.Enlightenment.xml
@@ -0,0 +1,18 @@
+
+
+
+ Nito.AsyncEx.Enlightenment
+
+
+
+
+ Verifies platform enlightenment.
+
+
+
+
+ Returns a value indicating whether the correct platform enlightenment provider has been loaded.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/MonoAndroid/Nito.AsyncEx.dll b/packages/Nito.AsyncEx.4.0.1/lib/MonoAndroid/Nito.AsyncEx.dll
new file mode 100644
index 000000000..e414e7a28
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/MonoAndroid/Nito.AsyncEx.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/MonoAndroid/Nito.AsyncEx.xml b/packages/Nito.AsyncEx.4.0.1/lib/MonoAndroid/Nito.AsyncEx.xml
new file mode 100644
index 000000000..d497cca9c
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/MonoAndroid/Nito.AsyncEx.xml
@@ -0,0 +1,3930 @@
+
+
+
+ Nito.AsyncEx
+
+
+
+
+ An async-compatible auto-reset event.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible auto-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous auto-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event. This method may block the calling thread.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately.
+
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately. This method may block the calling thread.
+
+
+
+
+ Sets the event, atomically completing a task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ An async-compatible barrier.
+
+
+
+
+ Mutex used to control access to other fields.
+
+
+
+
+ The TCS used to signal the current phase.
+
+
+
+
+ The current phase.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ The total number of participants.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The asynchronous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ The synchonous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Gets a semi-unique identifier for this asynchronous barrier.
+
+
+
+
+ Gets the current phase of the barrier.
+
+
+
+
+ Gets the number of participants in this barrier.
+
+
+
+
+ Gets the number of participants for this phase that have not yet signalled.
+
+
+
+
+ Starts executing the post-phase action and returns a representing the action.
+
+
+
+
+ Signals completions to this barrier. Returns the task for the current phase, which may already be completed. Returns null if the signal count is greater than the remaining participant count.
+
+ The number of completions to signal.
+ Whether the participants should be removed permanently.
+
+
+
+ Signals the specified number of completions to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+ The cancellation token used to cancel the wait. If this signal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Adds the specified number of participants to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+ The number of participants to add.
+
+
+
+ Adds a participant to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and asynchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and asynchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ An async-compatible condition variable. This type uses Mesa-style semantics (the notifying tasks do not yield).
+
+
+
+
+ The lock associated with this condition variable.
+
+
+
+
+ The queue of waiting tasks.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+
+
+
+ Gets a semi-unique identifier for this asynchronous condition variable.
+
+
+
+
+ Sends a signal to a single task waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Provides a context for asynchronous operations. This class is threadsafe.
+
+
+ may only be called once. After returns, the async context should be disposed.
+
+
+
+
+ The queue holding the actions to run.
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The number of outstanding operations, including actions in the queue.
+
+
+
+
+ Initializes a new instance of the class. This is an advanced operation; most people should use one of the static Run methods instead.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous context. This is the same identifier as the context's .
+
+
+
+
+ Increments the outstanding asynchronous operation count.
+
+
+
+
+ Decrements the outstanding asynchronous operation count.
+
+
+
+
+ Queues a task for execution by . If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The task to queue. May not be null.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Disposes all resources used by this class. This method should NOT be called while is executing.
+
+
+
+
+ Executes all queued actions. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from tasks that are supposed to propagate errors.
+
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task. This method will unwrap and propagate errors from the task.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task proxy.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task proxy. This method will unwrap and propagate errors from the task proxy.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Gets the current for this thread, or null if this thread is not currently running in an .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . Be careful with async delegates; you may need to call and to prevent early termination of this .
+
+
+
+
+ The implementation used by .
+
+
+
+
+ The async context.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context.
+
+
+
+ Gets the async context.
+
+
+
+
+ Dispatches an asynchronous message to the async context. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Dispatches an asynchronous message to the async context, and waits for it to complete.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Responds to the notification that an operation has started by incrementing the outstanding asynchronous operation count.
+
+
+
+
+ Responds to the notification that an operation has completed by decrementing the outstanding asynchronous operation count.
+
+
+
+
+ Creates a copy of the synchronization context.
+
+ A new object.
+
+
+
+ Returns a hash code for this instance.
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+ Determines whether the specified is equal to this instance. It is considered equal if it refers to the same underlying async context as this instance.
+
+ The to compare with this instance.
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+ A blocking queue.
+
+
+
+
+ The underlying blocking collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a blocking enumerable that removes items from the queue. This enumerable only completes after has been called.
+
+ A blocking enumerable that removes items from the queue.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Attempts to add the item to the queue. If the queue has been marked as complete for adding, this method returns false.
+
+ The item to enqueue.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Marks the queue as complete for adding, allowing the enumerator returned from to eventually complete. This method may be called several times.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ A task scheduler which schedules tasks to an async context.
+
+
+
+
+ The async context for this task scheduler.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context for this task scheduler. May not be null.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Queues a to the scheduler. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The to be queued.
+
+
+
+ Determines whether the provided can be executed synchronously in this call, and if it can, executes it.
+
+ The to be executed.
+ A Boolean denoting whether or not task has previously been queued. If this parameter is True, then the task may have been previously queued (scheduled); if False, then the task is known not to have been queued, and this call is being made in order to execute the task inline without queuing it.
+ A Boolean value indicating whether the task was executed inline.
+ The was already executed.
+
+
+
+ Indicates the maximum concurrency level this is able to support.
+
+
+
+
+ Exposes the base method.
+
+ The task to attempt to execute.
+
+
+
+ A thread that executes actions within an .
+
+
+
+
+ The child thread.
+
+
+
+
+ The asynchronous context executed by the child thread.
+
+
+
+
+ A flag used to ensure we only call once during complex join/dispose operations.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands. If is true, then the child thread is an STA thread (throwing if the platform does not support STA threads).
+
+
+
+
+ Gets the executed by this thread.
+
+
+
+
+ Permits the thread to exit, if we have not already done so.
+
+
+
+
+ Requests the thread to exit and returns a task representing the exit of the thread. The thread will exit when all outstanding asynchronous operations complete.
+
+
+
+
+ Requests the thread to exit.
+
+
+
+
+ Gets the for this thread, which can be used to schedule work to this thread.
+
+
+
+
+ An async-compatible countdown event.
+
+
+
+
+ The TCS used to signal this event.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ Creates an async-compatible countdown event.
+
+ The number of signals this event will need before it becomes set. Must be greater than zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous countdown event.
+
+
+
+
+ Gets the current number of remaining signals before this event becomes set.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Attempts to modify the current count by the specified amount. This method returns false if the new current count value would be invalid, or if the count has already reached zero.
+
+ The amount to change the current count. This may be positive or negative, but not zero.
+
+
+
+ Attempts to add the specified value to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Attempts to add the specified value to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Provides asynchronous wrappers.
+
+ The type of the result of the asychronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method. May not be null.
+ The end method. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap. May not be null.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event.
+ The event args.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event. May not be null.
+ The name of the event. May not be null.
+ The event args.
+
+
+
+ Manages the subscription to an event on a target object, triggering a task (and unsubscribing) when the event is raised.
+
+ The type of event arguments passed to the event.
+
+
+
+ The source for our task, which is returned to the user.
+
+
+
+
+ The subscription to the event.
+
+
+
+
+ The object that publishes the event.
+
+
+
+
+ The event to which we subscribe.
+
+
+
+
+ Subscribes to the specified event.
+
+ The object that publishes the event.
+ The event to which we subscribe.
+
+
+
+ Gets the task that is completed when the event is raised.
+
+
+
+
+ Private method that handles event completion. Do not call this method; it is public to avoid security problems when reflecting.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+ The result of the asynchronous operation.
+
+
+
+ Provides asynchronous wrappers.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method.
+ The end method.
+
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Wraps a with a . When the is signalled, the returned is completed. If the handle is already signalled, this method acts synchronously.
+
+ The to observe.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the handle is already signalled or the timeout is zero, this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is (successfully) completed. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled or the cancellation token is already cancelled, this method acts synchronously.
+
+ The to observe.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled, the timeout is zero, or the cancellation token is already cancelled, then this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+
+
+
+
+ Provides support for asynchronous lazy initialization. This type is fully threadsafe.
+
+ The type of object that is being asynchronously initialized.
+
+
+
+ The underlying lazy task.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Initializes a new instance of the class.
+
+ The asynchronous delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lazy instance.
+
+
+
+
+ Whether the asynchronous factory method has started. This is initially false and becomes true when this instance is awaited or after is called.
+
+
+
+
+ Asynchronous infrastructure support. This method permits instances of to be await'ed.
+
+
+
+
+ Starts the asynchronous initialization, if it has not already started.
+
+
+
+
+ A mutual exclusion lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ Whether the lock is taken by a task.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock.
+
+
+
+
+ A task that is completed with the key object for this lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock using the specified wait queue.
+
+ The wait queue used to manage waiters.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+
+
+
+ Releases the lock.
+
+
+
+
+ The disposable which releases the lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ An async-compatible manual-reset event.
+
+
+
+
+ The object used for synchronization.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Creates an async-compatible manual-reset event.
+
+ Whether the manual-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible manual-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous manual-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Sets the event, atomically completing every task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ Resets the event. If the event is already reset, this method does nothing.
+
+
+
+
+ An async-compatible monitor.
+
+
+
+
+ The lock.
+
+
+
+
+ The condition variable.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Gets a semi-unique identifier for this monitor.
+
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Synchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Sends a signal to a single task waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ An async-compatible producer/consumer queue.
+
+ The type of elements contained in the queue.
+
+
+
+ The underlying queue.
+
+
+
+
+ The maximum number of elements allowed in the queue.
+
+
+
+
+ The mutual-exclusion lock protecting the queue.
+
+
+
+
+ A condition variable that is signalled when the queue is not full.
+
+
+
+
+ A condition variable that is signalled when the queue is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the queue is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements and a maximum element count.
+
+ The initial elements to place in the queue.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements.
+
+ The initial elements to place in the queue.
+
+
+
+ Creates a new async-compatible producer/consumer queue with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue.
+
+
+
+
+ Whether the queue is empty.
+
+
+
+
+ Whether the queue is full.
+
+
+
+
+ Releases resources held by this instance. After disposal, any use of this instance is undefined.
+
+
+
+
+ Asynchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Attempts to enqueue an item.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related enqueue operations. May be null if this is the only enqueue operation.
+
+
+
+ Attempts to enqueue an item. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. This method may block the calling thread. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item.
+
+ A cancellation token that can be used to abort the dequeue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related dequeue operations. May be null if this is the only dequeue operation.
+
+
+
+ Attempts to dequeue an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ The result of a TryDequeue, DequeueFromAny, or TryDequeueFromAny operation.
+
+
+
+
+ The queue from which the item was dequeued, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The dequeued item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ A reader/writer lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as writers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as upgradeable readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to upgrade a reader lock to a writer lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The current upgradeable reader lock key, if any. If this is not null, then there is an upgradeable reader lock held.
+
+
+
+
+ Number of reader locks held (including an upgradeable reader lock, if applicable); -1 if a writer lock is held; 0 if no locks are held.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ A task that is completed with the reader key object for this lock.
+
+
+
+
+ A task that is completed with the writer key object for this lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Applies a continuation to the task that will call if the task is canceled. This method may not be called while holding the sync lock.
+
+ The task to observe for cancellation.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously upgrades a reader lock to a writer lock. This method assumes the sync lock is already held.
+
+
+
+
+ Downgrades a writer lock to a reader lock. This method assumes the sync lock is already held.
+
+
+
+
+ Grants lock(s) to waiting tasks. This method assumes the sync lock is already held.
+
+
+
+
+ Releases the lock as a reader.
+
+
+
+
+ Releases the lock as a writer.
+
+
+
+
+ Releases the lock as an upgradeable reader.
+
+
+
+
+ The disposable which releases the reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which releases the writer lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which manages the upgradeable reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ The task doing the upgrade.
+
+
+
+
+ A task that is completed with the upgrade key object for this key.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Gets a value indicating whether this lock has been upgraded to a write lock.
+
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+
+
+
+ Downgrades the writer lock to a reader lock.
+
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which downgrades an upgradeable reader key.
+
+
+
+
+ The upgradeable reader key to downgrade.
+
+
+
+
+ Creates the upgrade key for an upgradeable reader key.
+
+ The upgradeable reader key to downgrade. May not be null.
+
+
+
+ Downgrade the upgradeable reader key.
+
+
+
+
+ An async-compatible semaphore. Alternatively, you could use SemaphoreSlim on .NET 4.5 / Windows Store.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the semaphore.
+
+
+
+
+ The number of waits that will be immediately granted.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+ The wait queue used to manage waiters.
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous semaphore.
+
+
+
+
+ Gets the number of slots currently available on this semaphore.
+
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ A collection of cancelable instances. Implementations must be threadsafe and must work correctly if the caller is holding a lock.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ Gets whether the queue is empty.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. The returned task must support both synchronous and asynchronous waits.
+
+ The queued task.
+
+
+
+ Removes a single entry in the wait queue. Returns a disposable that completes that entry.
+
+ The result used to complete the wait queue entry. If this isn't needed, use default(T).
+
+
+
+ Removes all entries in the wait queue. Returns a disposable that completes all entries.
+
+ The result used to complete the wait queue entries. If this isn't needed, use default(T).
+
+
+
+ Attempts to remove an entry from the wait queue. Returns a disposable that cancels the entry.
+
+ The task to cancel.
+ A value indicating whether the entry was found and canceled.
+
+
+
+ Removes all entries from the wait queue. Returns a disposable that cancels all entries.
+
+
+
+
+ Provides extension methods for wait queues.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ A synchronization object taken while cancelling the entry.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ The default wait queue implementation, which uses a double-ended queue.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ An awaitable wrapper around a task whose result is disposable. The wrapper is not disposable, so this prevents usage errors like "using (MyAsync())" when the appropriate usage should be "using (await MyAsync())".
+
+ The type of the result of the underlying task.
+
+
+
+ The underlying task.
+
+
+
+
+ Initializes a new awaitable wrapper around the specified task.
+
+ The underlying task to wrap.
+
+
+
+ Returns the underlying task.
+
+
+
+
+ Implicit conversion to the underlying task.
+
+ The awaitable wrapper.
+
+
+
+ Infrastructure. Returns the task awaiter for the underlying task.
+
+
+
+
+ Infrastructure. Returns a configured task awaiter for the underlying task.
+
+ Whether to attempt to marshal the continuation back to the captured context.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Returns a that is canceled when this is canceled. This method will leak resources if the cancellation token is long-lived; use for a similar approach with proper resource management.
+
+ The to monitor.
+ A that is canceled when this is canceled.
+
+
+
+ Returns a which holds the task for this cancellation token.
+
+ The cancellation token to observe.
+
+
+
+ Holds the task for a cancellation token, as well as the token registration. The registration is disposed when this instance is disposed.
+
+
+
+
+ The cancellation token registration, if any. This is null if the registration was not necessary.
+
+
+
+
+ Creates a task for the specified cancellation token, registering with the token if necessary.
+
+ The cancellation token to observe.
+
+
+
+ Gets the task for the source cancellation token.
+
+
+
+
+ Disposes the cancellation token registration, if any. Note that this may cause to never complete.
+
+
+
+
+ Helper methods for cancellation tokens.
+
+
+
+
+ Initializes the static members.
+
+
+
+
+ Gets , a cancellation token that is never canceled.
+
+
+
+
+ Gets a cancellation token that is already canceled.
+
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+ The options to use for the task continuation.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+
+
+
+ Manages the deferrals for a "command" event that may have asynchonous handlers.
+
+
+
+
+ The countdown event, triggered when all deferrals have completed. This is null if there are no deferrals.
+
+
+
+
+ Gets a deferral. The deferral is complete when disposed.
+
+ The deferral.
+
+
+
+ Notifies the manager that all deferrals have been requested, and returns a task that is completed when all deferrals have completed.
+
+ A task that is completed when all deferrals have completed.
+
+
+
+ A deferral.
+
+
+
+
+ The countdown event of the deferral manager.
+
+
+
+
+ Creates a new deferral referencing the countdown event of the deferral manager.
+
+ The countdown event of the deferral manager.
+
+
+
+ Completes the deferral.
+
+
+
+
+ Provides helper (non-extension) methods dealing with exceptions.
+
+
+
+
+ Attempts to prepare the exception for re-throwing by preserving the stack trace. The returned exception should be immediately thrown.
+
+ The exception. May not be null.
+ The that was passed into this method.
+
+
+
+ Allocates Ids for instances on demand. 0 is an invalid/unassigned Id. Ids may be non-unique in very long-running systems. This is similar to the Id system used by and .
+
+ The type for which ids are generated.
+
+
+
+ The last id generated for this type. This is 0 if no ids have been generated.
+
+
+
+
+ Returns the id, allocating it if necessary.
+
+ A reference to the field containing the id.
+
+
+
+ A that may or may not also reference its own . Instances of this type should always be disposed.
+
+
+
+
+ The , if any. If this is not null, then is _cts.Token.
+
+
+
+
+ The . If is not null, then this is _cts.Token.
+
+
+
+
+ Creates a normalized cancellation token that can never be canceled.
+
+
+
+
+ Creates a normalized cancellation token from a . is set to the property of .
+
+ The source for this token.
+
+
+
+ Creates a normalized cancellation token from a . is set to .
+
+ The source for this token.
+
+
+
+ Releases any resources used by this normalized cancellation token.
+
+
+
+
+ Gets the for this normalized cancellation token.
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets a task that completes successfully when completes (successfully, faulted, or canceled). This property never changes and is never null.
+
+
+
+
+ Gets the current task status. This property raises a notification when the task completes.
+
+
+
+
+ Gets whether the task has completed. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task is busy (not completed). This property raises a notification when the value changes to false.
+
+
+
+
+ Gets whether the task has completed successfully. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task has been canceled. This property raises a notification only if the task is canceled (i.e., if the value changes to true).
+
+
+
+
+ Gets whether the task has faulted. This property raises a notification only if the task faults (i.e., if the value changes to true).
+
+
+
+
+ Gets the wrapped faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the error message for the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets the result of the task. Returns the default value of if the task has not completed successfully. This property raises a notification when the task completes successfully.
+
+
+
+
+ Factory for task completion notifiers.
+
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The type of the task result.
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ The source (controller) of a "pause token", which can be used to cooperatively pause and unpause operations.
+
+
+
+
+ The MRE that manages the "pause" logic. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether or not this source (and its tokens) are in the paused state.
+
+
+
+
+ Gets a pause token controlled by this source.
+
+
+
+
+ A type that allows an operation to be cooperatively paused.
+
+
+
+
+ The MRE that manages the "pause" logic, or null if this token can never be paused. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether this token can ever possibly be paused.
+
+
+
+
+ Whether or not this token is in the paused state.
+
+
+
+
+ Asynchronously waits until the pause token is not paused.
+
+
+
+
+ Asynchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ Synchronously waits until the pause token is not paused.
+
+
+
+
+ Synchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ A progress implementation that stores progress updates in a property. If this instance is created on a UI thread, its property is suitable for data binding.
+
+ The type of progress value.
+
+
+
+ The context of the thread that created this instance.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The initial progress value.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Occurs when the property value changes.
+
+
+
+
+ Provides helper types for .
+
+
+
+
+ Retrieves the current synchronization context, or the default synchronization context if there is no current synchronization context.
+
+
+
+
+ Utility class for temporarily switching implementations.
+
+
+
+
+ The previous .
+
+
+
+
+ Whether this object has already been disposed.
+
+
+
+
+ Initializes a new instance of the class, installing the new .
+
+ The new .
+
+
+
+ Restores the old .
+
+
+
+
+ Provides synchronous extension methods for tasks.
+
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ The result of the task.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The result of the task.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed.
+
+
+
+ Represents the producer side of a unbound to a delegate, providing access to the consumer side through the property.
+
+
+
+
+ The underlying TCS.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified state.
+
+ The state to use as the underlying 's .
+
+
+
+ Initializes a new instance of the class with the specified options.
+
+ The options to use when creating the underlying .
+
+
+
+ Initializes a new instance of the class with the specified state and options.
+
+ The state to use as the underlying 's .
+ The options to use when creating the underlying .
+
+
+
+ Gets the created by this .
+
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ The underlying has already been completed.
+
+
+
+ Transitions the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the target asynchronous operation.
+ The type of the result of the source asynchronous operation.
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ The delegate used to retrieve the result. This is only invoked if indicates successful completion. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a with the specified value, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Attempts to complete a , forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Provides completed task constants.
+
+
+
+
+ A task that has been completed with the value true.
+
+
+
+
+ A task that has been completed with the value false.
+
+
+
+
+ A task that has been completed with the value 0.
+
+
+
+
+ A task that has been completed with the value -1.
+
+
+
+
+ A that has been completed.
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides completed task constants.
+
+ The type of the task result.
+
+
+
+ A task that has been completed with the default value of .
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides extension methods for tasks.
+
+
+
+
+ Creates a new array of tasks which complete in order.
+
+ The type of the results of the tasks.
+ The tasks to order by completion.
+
+
+
+ Provides extension methods for task factories.
+
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ A double-ended queue (deque), which provides O(1) indexed access, O(1) removals from the front and back, amortized O(1) insertions to the front and back, and O(N) insertions and removals anywhere else (with the operations getting slower as the index approaches the middle).
+
+ The type of elements contained in the deque.
+
+
+
+ The default capacity.
+
+
+
+
+ The circular buffer that holds the view.
+
+
+
+
+ The offset into where the view begins.
+
+
+
+
+ Initializes a new instance of the class with the specified capacity.
+
+ The initial capacity. Must be greater than 0.
+
+
+
+ Initializes a new instance of the class with the elements from the specified collection.
+
+ The collection.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a value indicating whether this list is read-only. This implementation always returns false.
+
+ true if this list is read-only; otherwise, false.
+
+
+
+ Gets or sets the item at the specified index.
+
+ The index of the item to get or set.
+ is not a valid index in this list.
+ This property is set and the list is read-only.
+
+
+
+ Inserts an item to this list at the specified index.
+
+ The zero-based index at which should be inserted.
+ The object to insert into this list.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Determines the index of a specific item in this list.
+
+ The object to locate in this list.
+ The index of if found in this list; otherwise, -1.
+
+
+
+ Adds an item to the end of this list.
+
+ The object to add to this list.
+
+ This list is read-only.
+
+
+
+
+ Determines whether this list contains a specific value.
+
+ The object to locate in this list.
+
+ true if is found in this list; otherwise, false.
+
+
+
+
+ Copies the elements of this list to an , starting at a particular index.
+
+ The one-dimensional that is the destination of the elements copied from this slice. The must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+ is null.
+
+
+ is less than 0.
+
+
+ is equal to or greater than the length of .
+ -or-
+ The number of elements in the source is greater than the available space from to the end of the destination .
+
+
+
+
+ Removes the first occurrence of a specific object from this list.
+
+ The object to remove from this list.
+
+ true if was successfully removed from this list; otherwise, false. This method also returns false if is not found in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Checks the argument to see if it refers to a valid insertion point in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Checks the argument to see if it refers to an existing element in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an existing element for the source.
+
+
+
+ Checks the and arguments for validity when applied to a source of a given length. Allows 0-element ranges, including a 0-element range at the end of the source.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into source at which the range begins.
+ The number of elements in the range.
+ Either or is less than 0.
+ The range [offset, offset + count) is not within the range [0, sourceLength).
+
+
+
+ Gets a value indicating whether this instance is empty.
+
+
+
+
+ Gets a value indicating whether this instance is at full capacity.
+
+
+
+
+ Gets a value indicating whether the buffer is "split" (meaning the beginning of the view is at a later index in than the end).
+
+
+
+
+ Gets or sets the capacity for this deque. This value must always be greater than zero, and this property cannot be set to a value less than .
+
+ Capacity cannot be set to a value less than .
+
+
+
+ Gets the number of elements contained in this deque.
+
+ The number of elements contained in this deque.
+
+
+
+ Applies the offset to , resulting in a buffer index.
+
+ The deque index.
+ The buffer index.
+
+
+
+ Gets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element at the specified index.
+
+
+
+ Sets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Inserts an element at the specified view index.
+
+ The zero-based view index at which the element should be inserted. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Removes an element at the specified view index.
+
+ The zero-based view index of the element to remove. This index is guaranteed to be valid.
+
+
+
+ Increments by using modulo- arithmetic.
+
+ The value by which to increase . May not be negative.
+ The value of after it was incremented.
+
+
+
+ Decrements by using modulo- arithmetic.
+
+ The value by which to reduce . May not be negative or greater than .
+ The value of before it was decremented.
+
+
+
+ Inserts a single element to the back of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Inserts a single element to the front of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Removes and returns the last element in the view. must be false when this method is called.
+
+ The former last element.
+
+
+
+ Removes and returns the first element in the view. must be false when this method is called.
+
+ The former first element.
+
+
+
+ Inserts a range of elements into the view.
+
+ The index into the view at which the elements are to be inserted.
+ The elements to insert.
+ The number of elements in . Must be greater than zero, and the sum of and must be less than or equal to .
+
+
+
+ Removes a range of elements from the view.
+
+ The index into the view at which the range begins.
+ The number of elements in the range. This must be greater than 0 and less than or equal to .
+
+
+
+ Doubles the capacity if necessary to make room for one more element. When this method returns, is false.
+
+
+
+
+ Inserts a single element at the back of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a single element at the front of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a collection of elements into this deque.
+
+ The index at which the collection is inserted.
+ The collection of elements to insert.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Removes a range of elements from this deque.
+
+ The index into the deque at which the range begins.
+ The number of elements to remove.
+ Either or is less than 0.
+ The range [, + ) is not within the range [0, ).
+
+
+
+ Removes and returns the last element of this deque.
+
+ The former last element.
+ The deque is empty.
+
+
+
+ Removes and returns the first element of this deque.
+
+ The former first element.
+ The deque is empty.
+
+
+
+ Removes all items from this deque.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.Mac20/Nito.AsyncEx.Concurrent.dll b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.Mac20/Nito.AsyncEx.Concurrent.dll
new file mode 100644
index 000000000..8f91a729a
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.Mac20/Nito.AsyncEx.Concurrent.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.Mac20/Nito.AsyncEx.Concurrent.xml b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.Mac20/Nito.AsyncEx.Concurrent.xml
new file mode 100644
index 000000000..497b59a89
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.Mac20/Nito.AsyncEx.Concurrent.xml
@@ -0,0 +1,401 @@
+
+
+
+ Nito.AsyncEx.Concurrent
+
+
+
+
+ An async-compatible producer/consumer collection.
+
+ The type of elements contained in the collection.
+
+
+
+ The underlying collection.
+
+
+
+
+ The maximum number of elements allowed in the collection.
+
+
+
+
+ The mutual-exclusion lock protecting the collection.
+
+
+
+
+ A condition variable that is signalled when the collection is not full.
+
+
+
+
+ A condition variable that is signalled when the collection is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the collection is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer collection wrapping the specified collection and with a maximum element count.
+
+ The collection to wrap.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer collection wrapping the specified collection.
+
+ The collection to wrap.
+
+
+
+ Creates a new async-compatible producer/consumer collection with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer collection.
+
+
+
+
+ Whether the collection is empty.
+
+
+
+
+ Whether the collection is full.
+
+
+
+
+ Asynchronously marks the producer/consumer collection as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer collection as complete for adding.
+
+
+
+
+ Attempts to add an item.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related add operations. May be null if this is the only add operation.
+
+
+
+ Attempts to add an item. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer collection has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer collection has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer collection.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to take an item.
+
+ A cancellation token that can be used to abort the take operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related take operations. May be null if this is the only take operation.
+
+
+
+ Attempts to take an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection.
+
+
+
+
+ Attempts to take an item from the producer/consumer collection. This method may block the calling thread.
+
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed.
+
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed. This method may block the calling thread.
+
+
+
+
+ The result of a TryTake, TakeFromAny, or TryTakeFromAny operation.
+
+
+
+
+ The collection from which the item was taken, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The producer/consumer collections.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The producer/consumer collections.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The array of producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The array of producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The array of producer/consumer collections.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The array of producer/consumer collections.
+
+
+
+ A progress implementation that sends progress reports to a producer/consumer collection.
+
+ The type of progress value.
+
+
+
+ The producer/consumer collection that receives progress reports.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The producer/consumer collection that receives progress reports.
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.Mac20/Nito.AsyncEx.Enlightenment.dll b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.Mac20/Nito.AsyncEx.Enlightenment.dll
new file mode 100644
index 000000000..e21d38061
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.Mac20/Nito.AsyncEx.Enlightenment.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.Mac20/Nito.AsyncEx.Enlightenment.xml b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.Mac20/Nito.AsyncEx.Enlightenment.xml
new file mode 100644
index 000000000..db9ce6e4a
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.Mac20/Nito.AsyncEx.Enlightenment.xml
@@ -0,0 +1,18 @@
+
+
+
+ Nito.AsyncEx.Enlightenment
+
+
+
+
+ Verifies platform enlightenment.
+
+
+
+
+ Returns a value indicating whether the correct platform enlightenment provider has been loaded.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.Mac20/Nito.AsyncEx.dll b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.Mac20/Nito.AsyncEx.dll
new file mode 100644
index 000000000..e414e7a28
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.Mac20/Nito.AsyncEx.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.Mac20/Nito.AsyncEx.xml b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.Mac20/Nito.AsyncEx.xml
new file mode 100644
index 000000000..d497cca9c
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.Mac20/Nito.AsyncEx.xml
@@ -0,0 +1,3930 @@
+
+
+
+ Nito.AsyncEx
+
+
+
+
+ An async-compatible auto-reset event.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible auto-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous auto-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event. This method may block the calling thread.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately.
+
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately. This method may block the calling thread.
+
+
+
+
+ Sets the event, atomically completing a task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ An async-compatible barrier.
+
+
+
+
+ Mutex used to control access to other fields.
+
+
+
+
+ The TCS used to signal the current phase.
+
+
+
+
+ The current phase.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ The total number of participants.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The asynchronous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ The synchonous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Gets a semi-unique identifier for this asynchronous barrier.
+
+
+
+
+ Gets the current phase of the barrier.
+
+
+
+
+ Gets the number of participants in this barrier.
+
+
+
+
+ Gets the number of participants for this phase that have not yet signalled.
+
+
+
+
+ Starts executing the post-phase action and returns a representing the action.
+
+
+
+
+ Signals completions to this barrier. Returns the task for the current phase, which may already be completed. Returns null if the signal count is greater than the remaining participant count.
+
+ The number of completions to signal.
+ Whether the participants should be removed permanently.
+
+
+
+ Signals the specified number of completions to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+ The cancellation token used to cancel the wait. If this signal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Adds the specified number of participants to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+ The number of participants to add.
+
+
+
+ Adds a participant to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and asynchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and asynchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ An async-compatible condition variable. This type uses Mesa-style semantics (the notifying tasks do not yield).
+
+
+
+
+ The lock associated with this condition variable.
+
+
+
+
+ The queue of waiting tasks.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+
+
+
+ Gets a semi-unique identifier for this asynchronous condition variable.
+
+
+
+
+ Sends a signal to a single task waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Provides a context for asynchronous operations. This class is threadsafe.
+
+
+ may only be called once. After returns, the async context should be disposed.
+
+
+
+
+ The queue holding the actions to run.
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The number of outstanding operations, including actions in the queue.
+
+
+
+
+ Initializes a new instance of the class. This is an advanced operation; most people should use one of the static Run methods instead.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous context. This is the same identifier as the context's .
+
+
+
+
+ Increments the outstanding asynchronous operation count.
+
+
+
+
+ Decrements the outstanding asynchronous operation count.
+
+
+
+
+ Queues a task for execution by . If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The task to queue. May not be null.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Disposes all resources used by this class. This method should NOT be called while is executing.
+
+
+
+
+ Executes all queued actions. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from tasks that are supposed to propagate errors.
+
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task. This method will unwrap and propagate errors from the task.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task proxy.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task proxy. This method will unwrap and propagate errors from the task proxy.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Gets the current for this thread, or null if this thread is not currently running in an .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . Be careful with async delegates; you may need to call and to prevent early termination of this .
+
+
+
+
+ The implementation used by .
+
+
+
+
+ The async context.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context.
+
+
+
+ Gets the async context.
+
+
+
+
+ Dispatches an asynchronous message to the async context. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Dispatches an asynchronous message to the async context, and waits for it to complete.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Responds to the notification that an operation has started by incrementing the outstanding asynchronous operation count.
+
+
+
+
+ Responds to the notification that an operation has completed by decrementing the outstanding asynchronous operation count.
+
+
+
+
+ Creates a copy of the synchronization context.
+
+ A new object.
+
+
+
+ Returns a hash code for this instance.
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+ Determines whether the specified is equal to this instance. It is considered equal if it refers to the same underlying async context as this instance.
+
+ The to compare with this instance.
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+ A blocking queue.
+
+
+
+
+ The underlying blocking collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a blocking enumerable that removes items from the queue. This enumerable only completes after has been called.
+
+ A blocking enumerable that removes items from the queue.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Attempts to add the item to the queue. If the queue has been marked as complete for adding, this method returns false.
+
+ The item to enqueue.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Marks the queue as complete for adding, allowing the enumerator returned from to eventually complete. This method may be called several times.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ A task scheduler which schedules tasks to an async context.
+
+
+
+
+ The async context for this task scheduler.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context for this task scheduler. May not be null.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Queues a to the scheduler. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The to be queued.
+
+
+
+ Determines whether the provided can be executed synchronously in this call, and if it can, executes it.
+
+ The to be executed.
+ A Boolean denoting whether or not task has previously been queued. If this parameter is True, then the task may have been previously queued (scheduled); if False, then the task is known not to have been queued, and this call is being made in order to execute the task inline without queuing it.
+ A Boolean value indicating whether the task was executed inline.
+ The was already executed.
+
+
+
+ Indicates the maximum concurrency level this is able to support.
+
+
+
+
+ Exposes the base method.
+
+ The task to attempt to execute.
+
+
+
+ A thread that executes actions within an .
+
+
+
+
+ The child thread.
+
+
+
+
+ The asynchronous context executed by the child thread.
+
+
+
+
+ A flag used to ensure we only call once during complex join/dispose operations.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands. If is true, then the child thread is an STA thread (throwing if the platform does not support STA threads).
+
+
+
+
+ Gets the executed by this thread.
+
+
+
+
+ Permits the thread to exit, if we have not already done so.
+
+
+
+
+ Requests the thread to exit and returns a task representing the exit of the thread. The thread will exit when all outstanding asynchronous operations complete.
+
+
+
+
+ Requests the thread to exit.
+
+
+
+
+ Gets the for this thread, which can be used to schedule work to this thread.
+
+
+
+
+ An async-compatible countdown event.
+
+
+
+
+ The TCS used to signal this event.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ Creates an async-compatible countdown event.
+
+ The number of signals this event will need before it becomes set. Must be greater than zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous countdown event.
+
+
+
+
+ Gets the current number of remaining signals before this event becomes set.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Attempts to modify the current count by the specified amount. This method returns false if the new current count value would be invalid, or if the count has already reached zero.
+
+ The amount to change the current count. This may be positive or negative, but not zero.
+
+
+
+ Attempts to add the specified value to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Attempts to add the specified value to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Provides asynchronous wrappers.
+
+ The type of the result of the asychronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method. May not be null.
+ The end method. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap. May not be null.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event.
+ The event args.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event. May not be null.
+ The name of the event. May not be null.
+ The event args.
+
+
+
+ Manages the subscription to an event on a target object, triggering a task (and unsubscribing) when the event is raised.
+
+ The type of event arguments passed to the event.
+
+
+
+ The source for our task, which is returned to the user.
+
+
+
+
+ The subscription to the event.
+
+
+
+
+ The object that publishes the event.
+
+
+
+
+ The event to which we subscribe.
+
+
+
+
+ Subscribes to the specified event.
+
+ The object that publishes the event.
+ The event to which we subscribe.
+
+
+
+ Gets the task that is completed when the event is raised.
+
+
+
+
+ Private method that handles event completion. Do not call this method; it is public to avoid security problems when reflecting.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+ The result of the asynchronous operation.
+
+
+
+ Provides asynchronous wrappers.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method.
+ The end method.
+
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Wraps a with a . When the is signalled, the returned is completed. If the handle is already signalled, this method acts synchronously.
+
+ The to observe.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the handle is already signalled or the timeout is zero, this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is (successfully) completed. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled or the cancellation token is already cancelled, this method acts synchronously.
+
+ The to observe.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled, the timeout is zero, or the cancellation token is already cancelled, then this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+
+
+
+
+ Provides support for asynchronous lazy initialization. This type is fully threadsafe.
+
+ The type of object that is being asynchronously initialized.
+
+
+
+ The underlying lazy task.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Initializes a new instance of the class.
+
+ The asynchronous delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lazy instance.
+
+
+
+
+ Whether the asynchronous factory method has started. This is initially false and becomes true when this instance is awaited or after is called.
+
+
+
+
+ Asynchronous infrastructure support. This method permits instances of to be await'ed.
+
+
+
+
+ Starts the asynchronous initialization, if it has not already started.
+
+
+
+
+ A mutual exclusion lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ Whether the lock is taken by a task.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock.
+
+
+
+
+ A task that is completed with the key object for this lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock using the specified wait queue.
+
+ The wait queue used to manage waiters.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+
+
+
+ Releases the lock.
+
+
+
+
+ The disposable which releases the lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ An async-compatible manual-reset event.
+
+
+
+
+ The object used for synchronization.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Creates an async-compatible manual-reset event.
+
+ Whether the manual-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible manual-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous manual-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Sets the event, atomically completing every task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ Resets the event. If the event is already reset, this method does nothing.
+
+
+
+
+ An async-compatible monitor.
+
+
+
+
+ The lock.
+
+
+
+
+ The condition variable.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Gets a semi-unique identifier for this monitor.
+
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Synchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Sends a signal to a single task waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ An async-compatible producer/consumer queue.
+
+ The type of elements contained in the queue.
+
+
+
+ The underlying queue.
+
+
+
+
+ The maximum number of elements allowed in the queue.
+
+
+
+
+ The mutual-exclusion lock protecting the queue.
+
+
+
+
+ A condition variable that is signalled when the queue is not full.
+
+
+
+
+ A condition variable that is signalled when the queue is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the queue is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements and a maximum element count.
+
+ The initial elements to place in the queue.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements.
+
+ The initial elements to place in the queue.
+
+
+
+ Creates a new async-compatible producer/consumer queue with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue.
+
+
+
+
+ Whether the queue is empty.
+
+
+
+
+ Whether the queue is full.
+
+
+
+
+ Releases resources held by this instance. After disposal, any use of this instance is undefined.
+
+
+
+
+ Asynchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Attempts to enqueue an item.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related enqueue operations. May be null if this is the only enqueue operation.
+
+
+
+ Attempts to enqueue an item. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. This method may block the calling thread. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item.
+
+ A cancellation token that can be used to abort the dequeue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related dequeue operations. May be null if this is the only dequeue operation.
+
+
+
+ Attempts to dequeue an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ The result of a TryDequeue, DequeueFromAny, or TryDequeueFromAny operation.
+
+
+
+
+ The queue from which the item was dequeued, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The dequeued item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ A reader/writer lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as writers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as upgradeable readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to upgrade a reader lock to a writer lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The current upgradeable reader lock key, if any. If this is not null, then there is an upgradeable reader lock held.
+
+
+
+
+ Number of reader locks held (including an upgradeable reader lock, if applicable); -1 if a writer lock is held; 0 if no locks are held.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ A task that is completed with the reader key object for this lock.
+
+
+
+
+ A task that is completed with the writer key object for this lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Applies a continuation to the task that will call if the task is canceled. This method may not be called while holding the sync lock.
+
+ The task to observe for cancellation.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously upgrades a reader lock to a writer lock. This method assumes the sync lock is already held.
+
+
+
+
+ Downgrades a writer lock to a reader lock. This method assumes the sync lock is already held.
+
+
+
+
+ Grants lock(s) to waiting tasks. This method assumes the sync lock is already held.
+
+
+
+
+ Releases the lock as a reader.
+
+
+
+
+ Releases the lock as a writer.
+
+
+
+
+ Releases the lock as an upgradeable reader.
+
+
+
+
+ The disposable which releases the reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which releases the writer lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which manages the upgradeable reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ The task doing the upgrade.
+
+
+
+
+ A task that is completed with the upgrade key object for this key.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Gets a value indicating whether this lock has been upgraded to a write lock.
+
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+
+
+
+ Downgrades the writer lock to a reader lock.
+
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which downgrades an upgradeable reader key.
+
+
+
+
+ The upgradeable reader key to downgrade.
+
+
+
+
+ Creates the upgrade key for an upgradeable reader key.
+
+ The upgradeable reader key to downgrade. May not be null.
+
+
+
+ Downgrade the upgradeable reader key.
+
+
+
+
+ An async-compatible semaphore. Alternatively, you could use SemaphoreSlim on .NET 4.5 / Windows Store.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the semaphore.
+
+
+
+
+ The number of waits that will be immediately granted.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+ The wait queue used to manage waiters.
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous semaphore.
+
+
+
+
+ Gets the number of slots currently available on this semaphore.
+
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ A collection of cancelable instances. Implementations must be threadsafe and must work correctly if the caller is holding a lock.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ Gets whether the queue is empty.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. The returned task must support both synchronous and asynchronous waits.
+
+ The queued task.
+
+
+
+ Removes a single entry in the wait queue. Returns a disposable that completes that entry.
+
+ The result used to complete the wait queue entry. If this isn't needed, use default(T).
+
+
+
+ Removes all entries in the wait queue. Returns a disposable that completes all entries.
+
+ The result used to complete the wait queue entries. If this isn't needed, use default(T).
+
+
+
+ Attempts to remove an entry from the wait queue. Returns a disposable that cancels the entry.
+
+ The task to cancel.
+ A value indicating whether the entry was found and canceled.
+
+
+
+ Removes all entries from the wait queue. Returns a disposable that cancels all entries.
+
+
+
+
+ Provides extension methods for wait queues.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ A synchronization object taken while cancelling the entry.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ The default wait queue implementation, which uses a double-ended queue.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ An awaitable wrapper around a task whose result is disposable. The wrapper is not disposable, so this prevents usage errors like "using (MyAsync())" when the appropriate usage should be "using (await MyAsync())".
+
+ The type of the result of the underlying task.
+
+
+
+ The underlying task.
+
+
+
+
+ Initializes a new awaitable wrapper around the specified task.
+
+ The underlying task to wrap.
+
+
+
+ Returns the underlying task.
+
+
+
+
+ Implicit conversion to the underlying task.
+
+ The awaitable wrapper.
+
+
+
+ Infrastructure. Returns the task awaiter for the underlying task.
+
+
+
+
+ Infrastructure. Returns a configured task awaiter for the underlying task.
+
+ Whether to attempt to marshal the continuation back to the captured context.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Returns a that is canceled when this is canceled. This method will leak resources if the cancellation token is long-lived; use for a similar approach with proper resource management.
+
+ The to monitor.
+ A that is canceled when this is canceled.
+
+
+
+ Returns a which holds the task for this cancellation token.
+
+ The cancellation token to observe.
+
+
+
+ Holds the task for a cancellation token, as well as the token registration. The registration is disposed when this instance is disposed.
+
+
+
+
+ The cancellation token registration, if any. This is null if the registration was not necessary.
+
+
+
+
+ Creates a task for the specified cancellation token, registering with the token if necessary.
+
+ The cancellation token to observe.
+
+
+
+ Gets the task for the source cancellation token.
+
+
+
+
+ Disposes the cancellation token registration, if any. Note that this may cause to never complete.
+
+
+
+
+ Helper methods for cancellation tokens.
+
+
+
+
+ Initializes the static members.
+
+
+
+
+ Gets , a cancellation token that is never canceled.
+
+
+
+
+ Gets a cancellation token that is already canceled.
+
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+ The options to use for the task continuation.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+
+
+
+ Manages the deferrals for a "command" event that may have asynchonous handlers.
+
+
+
+
+ The countdown event, triggered when all deferrals have completed. This is null if there are no deferrals.
+
+
+
+
+ Gets a deferral. The deferral is complete when disposed.
+
+ The deferral.
+
+
+
+ Notifies the manager that all deferrals have been requested, and returns a task that is completed when all deferrals have completed.
+
+ A task that is completed when all deferrals have completed.
+
+
+
+ A deferral.
+
+
+
+
+ The countdown event of the deferral manager.
+
+
+
+
+ Creates a new deferral referencing the countdown event of the deferral manager.
+
+ The countdown event of the deferral manager.
+
+
+
+ Completes the deferral.
+
+
+
+
+ Provides helper (non-extension) methods dealing with exceptions.
+
+
+
+
+ Attempts to prepare the exception for re-throwing by preserving the stack trace. The returned exception should be immediately thrown.
+
+ The exception. May not be null.
+ The that was passed into this method.
+
+
+
+ Allocates Ids for instances on demand. 0 is an invalid/unassigned Id. Ids may be non-unique in very long-running systems. This is similar to the Id system used by and .
+
+ The type for which ids are generated.
+
+
+
+ The last id generated for this type. This is 0 if no ids have been generated.
+
+
+
+
+ Returns the id, allocating it if necessary.
+
+ A reference to the field containing the id.
+
+
+
+ A that may or may not also reference its own . Instances of this type should always be disposed.
+
+
+
+
+ The , if any. If this is not null, then is _cts.Token.
+
+
+
+
+ The . If is not null, then this is _cts.Token.
+
+
+
+
+ Creates a normalized cancellation token that can never be canceled.
+
+
+
+
+ Creates a normalized cancellation token from a . is set to the property of .
+
+ The source for this token.
+
+
+
+ Creates a normalized cancellation token from a . is set to .
+
+ The source for this token.
+
+
+
+ Releases any resources used by this normalized cancellation token.
+
+
+
+
+ Gets the for this normalized cancellation token.
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets a task that completes successfully when completes (successfully, faulted, or canceled). This property never changes and is never null.
+
+
+
+
+ Gets the current task status. This property raises a notification when the task completes.
+
+
+
+
+ Gets whether the task has completed. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task is busy (not completed). This property raises a notification when the value changes to false.
+
+
+
+
+ Gets whether the task has completed successfully. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task has been canceled. This property raises a notification only if the task is canceled (i.e., if the value changes to true).
+
+
+
+
+ Gets whether the task has faulted. This property raises a notification only if the task faults (i.e., if the value changes to true).
+
+
+
+
+ Gets the wrapped faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the error message for the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets the result of the task. Returns the default value of if the task has not completed successfully. This property raises a notification when the task completes successfully.
+
+
+
+
+ Factory for task completion notifiers.
+
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The type of the task result.
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ The source (controller) of a "pause token", which can be used to cooperatively pause and unpause operations.
+
+
+
+
+ The MRE that manages the "pause" logic. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether or not this source (and its tokens) are in the paused state.
+
+
+
+
+ Gets a pause token controlled by this source.
+
+
+
+
+ A type that allows an operation to be cooperatively paused.
+
+
+
+
+ The MRE that manages the "pause" logic, or null if this token can never be paused. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether this token can ever possibly be paused.
+
+
+
+
+ Whether or not this token is in the paused state.
+
+
+
+
+ Asynchronously waits until the pause token is not paused.
+
+
+
+
+ Asynchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ Synchronously waits until the pause token is not paused.
+
+
+
+
+ Synchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ A progress implementation that stores progress updates in a property. If this instance is created on a UI thread, its property is suitable for data binding.
+
+ The type of progress value.
+
+
+
+ The context of the thread that created this instance.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The initial progress value.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Occurs when the property value changes.
+
+
+
+
+ Provides helper types for .
+
+
+
+
+ Retrieves the current synchronization context, or the default synchronization context if there is no current synchronization context.
+
+
+
+
+ Utility class for temporarily switching implementations.
+
+
+
+
+ The previous .
+
+
+
+
+ Whether this object has already been disposed.
+
+
+
+
+ Initializes a new instance of the class, installing the new .
+
+ The new .
+
+
+
+ Restores the old .
+
+
+
+
+ Provides synchronous extension methods for tasks.
+
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ The result of the task.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The result of the task.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed.
+
+
+
+ Represents the producer side of a unbound to a delegate, providing access to the consumer side through the property.
+
+
+
+
+ The underlying TCS.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified state.
+
+ The state to use as the underlying 's .
+
+
+
+ Initializes a new instance of the class with the specified options.
+
+ The options to use when creating the underlying .
+
+
+
+ Initializes a new instance of the class with the specified state and options.
+
+ The state to use as the underlying 's .
+ The options to use when creating the underlying .
+
+
+
+ Gets the created by this .
+
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ The underlying has already been completed.
+
+
+
+ Transitions the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the target asynchronous operation.
+ The type of the result of the source asynchronous operation.
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ The delegate used to retrieve the result. This is only invoked if indicates successful completion. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a with the specified value, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Attempts to complete a , forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Provides completed task constants.
+
+
+
+
+ A task that has been completed with the value true.
+
+
+
+
+ A task that has been completed with the value false.
+
+
+
+
+ A task that has been completed with the value 0.
+
+
+
+
+ A task that has been completed with the value -1.
+
+
+
+
+ A that has been completed.
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides completed task constants.
+
+ The type of the task result.
+
+
+
+ A task that has been completed with the default value of .
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides extension methods for tasks.
+
+
+
+
+ Creates a new array of tasks which complete in order.
+
+ The type of the results of the tasks.
+ The tasks to order by completion.
+
+
+
+ Provides extension methods for task factories.
+
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ A double-ended queue (deque), which provides O(1) indexed access, O(1) removals from the front and back, amortized O(1) insertions to the front and back, and O(N) insertions and removals anywhere else (with the operations getting slower as the index approaches the middle).
+
+ The type of elements contained in the deque.
+
+
+
+ The default capacity.
+
+
+
+
+ The circular buffer that holds the view.
+
+
+
+
+ The offset into where the view begins.
+
+
+
+
+ Initializes a new instance of the class with the specified capacity.
+
+ The initial capacity. Must be greater than 0.
+
+
+
+ Initializes a new instance of the class with the elements from the specified collection.
+
+ The collection.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a value indicating whether this list is read-only. This implementation always returns false.
+
+ true if this list is read-only; otherwise, false.
+
+
+
+ Gets or sets the item at the specified index.
+
+ The index of the item to get or set.
+ is not a valid index in this list.
+ This property is set and the list is read-only.
+
+
+
+ Inserts an item to this list at the specified index.
+
+ The zero-based index at which should be inserted.
+ The object to insert into this list.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Determines the index of a specific item in this list.
+
+ The object to locate in this list.
+ The index of if found in this list; otherwise, -1.
+
+
+
+ Adds an item to the end of this list.
+
+ The object to add to this list.
+
+ This list is read-only.
+
+
+
+
+ Determines whether this list contains a specific value.
+
+ The object to locate in this list.
+
+ true if is found in this list; otherwise, false.
+
+
+
+
+ Copies the elements of this list to an , starting at a particular index.
+
+ The one-dimensional that is the destination of the elements copied from this slice. The must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+ is null.
+
+
+ is less than 0.
+
+
+ is equal to or greater than the length of .
+ -or-
+ The number of elements in the source is greater than the available space from to the end of the destination .
+
+
+
+
+ Removes the first occurrence of a specific object from this list.
+
+ The object to remove from this list.
+
+ true if was successfully removed from this list; otherwise, false. This method also returns false if is not found in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Checks the argument to see if it refers to a valid insertion point in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Checks the argument to see if it refers to an existing element in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an existing element for the source.
+
+
+
+ Checks the and arguments for validity when applied to a source of a given length. Allows 0-element ranges, including a 0-element range at the end of the source.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into source at which the range begins.
+ The number of elements in the range.
+ Either or is less than 0.
+ The range [offset, offset + count) is not within the range [0, sourceLength).
+
+
+
+ Gets a value indicating whether this instance is empty.
+
+
+
+
+ Gets a value indicating whether this instance is at full capacity.
+
+
+
+
+ Gets a value indicating whether the buffer is "split" (meaning the beginning of the view is at a later index in than the end).
+
+
+
+
+ Gets or sets the capacity for this deque. This value must always be greater than zero, and this property cannot be set to a value less than .
+
+ Capacity cannot be set to a value less than .
+
+
+
+ Gets the number of elements contained in this deque.
+
+ The number of elements contained in this deque.
+
+
+
+ Applies the offset to , resulting in a buffer index.
+
+ The deque index.
+ The buffer index.
+
+
+
+ Gets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element at the specified index.
+
+
+
+ Sets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Inserts an element at the specified view index.
+
+ The zero-based view index at which the element should be inserted. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Removes an element at the specified view index.
+
+ The zero-based view index of the element to remove. This index is guaranteed to be valid.
+
+
+
+ Increments by using modulo- arithmetic.
+
+ The value by which to increase . May not be negative.
+ The value of after it was incremented.
+
+
+
+ Decrements by using modulo- arithmetic.
+
+ The value by which to reduce . May not be negative or greater than .
+ The value of before it was decremented.
+
+
+
+ Inserts a single element to the back of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Inserts a single element to the front of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Removes and returns the last element in the view. must be false when this method is called.
+
+ The former last element.
+
+
+
+ Removes and returns the first element in the view. must be false when this method is called.
+
+ The former first element.
+
+
+
+ Inserts a range of elements into the view.
+
+ The index into the view at which the elements are to be inserted.
+ The elements to insert.
+ The number of elements in . Must be greater than zero, and the sum of and must be less than or equal to .
+
+
+
+ Removes a range of elements from the view.
+
+ The index into the view at which the range begins.
+ The number of elements in the range. This must be greater than 0 and less than or equal to .
+
+
+
+ Doubles the capacity if necessary to make room for one more element. When this method returns, is false.
+
+
+
+
+ Inserts a single element at the back of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a single element at the front of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a collection of elements into this deque.
+
+ The index at which the collection is inserted.
+ The collection of elements to insert.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Removes a range of elements from this deque.
+
+ The index into the deque at which the range begins.
+ The number of elements to remove.
+ Either or is less than 0.
+ The range [, + ) is not within the range [0, ).
+
+
+
+ Removes and returns the last element of this deque.
+
+ The former last element.
+ The deque is empty.
+
+
+
+ Removes and returns the first element of this deque.
+
+ The former first element.
+ The deque is empty.
+
+
+
+ Removes all items from this deque.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.iOS10/Nito.AsyncEx.Concurrent.dll b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.iOS10/Nito.AsyncEx.Concurrent.dll
new file mode 100644
index 000000000..8f91a729a
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.iOS10/Nito.AsyncEx.Concurrent.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.iOS10/Nito.AsyncEx.Concurrent.xml b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.iOS10/Nito.AsyncEx.Concurrent.xml
new file mode 100644
index 000000000..497b59a89
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.iOS10/Nito.AsyncEx.Concurrent.xml
@@ -0,0 +1,401 @@
+
+
+
+ Nito.AsyncEx.Concurrent
+
+
+
+
+ An async-compatible producer/consumer collection.
+
+ The type of elements contained in the collection.
+
+
+
+ The underlying collection.
+
+
+
+
+ The maximum number of elements allowed in the collection.
+
+
+
+
+ The mutual-exclusion lock protecting the collection.
+
+
+
+
+ A condition variable that is signalled when the collection is not full.
+
+
+
+
+ A condition variable that is signalled when the collection is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the collection is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer collection wrapping the specified collection and with a maximum element count.
+
+ The collection to wrap.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer collection wrapping the specified collection.
+
+ The collection to wrap.
+
+
+
+ Creates a new async-compatible producer/consumer collection with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer collection.
+
+
+
+
+ Whether the collection is empty.
+
+
+
+
+ Whether the collection is full.
+
+
+
+
+ Asynchronously marks the producer/consumer collection as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer collection as complete for adding.
+
+
+
+
+ Attempts to add an item.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related add operations. May be null if this is the only add operation.
+
+
+
+ Attempts to add an item. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer collection has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer collection has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer collection.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to take an item.
+
+ A cancellation token that can be used to abort the take operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related take operations. May be null if this is the only take operation.
+
+
+
+ Attempts to take an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection.
+
+
+
+
+ Attempts to take an item from the producer/consumer collection. This method may block the calling thread.
+
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed.
+
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed. This method may block the calling thread.
+
+
+
+
+ The result of a TryTake, TakeFromAny, or TryTakeFromAny operation.
+
+
+
+
+ The collection from which the item was taken, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The producer/consumer collections.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The producer/consumer collections.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The array of producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The array of producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The array of producer/consumer collections.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The array of producer/consumer collections.
+
+
+
+ A progress implementation that sends progress reports to a producer/consumer collection.
+
+ The type of progress value.
+
+
+
+ The producer/consumer collection that receives progress reports.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The producer/consumer collection that receives progress reports.
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.iOS10/Nito.AsyncEx.Enlightenment.dll b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.iOS10/Nito.AsyncEx.Enlightenment.dll
new file mode 100644
index 000000000..e21d38061
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.iOS10/Nito.AsyncEx.Enlightenment.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.iOS10/Nito.AsyncEx.Enlightenment.xml b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.iOS10/Nito.AsyncEx.Enlightenment.xml
new file mode 100644
index 000000000..db9ce6e4a
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.iOS10/Nito.AsyncEx.Enlightenment.xml
@@ -0,0 +1,18 @@
+
+
+
+ Nito.AsyncEx.Enlightenment
+
+
+
+
+ Verifies platform enlightenment.
+
+
+
+
+ Returns a value indicating whether the correct platform enlightenment provider has been loaded.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.iOS10/Nito.AsyncEx.dll b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.iOS10/Nito.AsyncEx.dll
new file mode 100644
index 000000000..e414e7a28
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.iOS10/Nito.AsyncEx.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.iOS10/Nito.AsyncEx.xml b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.iOS10/Nito.AsyncEx.xml
new file mode 100644
index 000000000..d497cca9c
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/Xamarin.iOS10/Nito.AsyncEx.xml
@@ -0,0 +1,3930 @@
+
+
+
+ Nito.AsyncEx
+
+
+
+
+ An async-compatible auto-reset event.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible auto-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous auto-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event. This method may block the calling thread.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately.
+
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately. This method may block the calling thread.
+
+
+
+
+ Sets the event, atomically completing a task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ An async-compatible barrier.
+
+
+
+
+ Mutex used to control access to other fields.
+
+
+
+
+ The TCS used to signal the current phase.
+
+
+
+
+ The current phase.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ The total number of participants.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The asynchronous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ The synchonous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Gets a semi-unique identifier for this asynchronous barrier.
+
+
+
+
+ Gets the current phase of the barrier.
+
+
+
+
+ Gets the number of participants in this barrier.
+
+
+
+
+ Gets the number of participants for this phase that have not yet signalled.
+
+
+
+
+ Starts executing the post-phase action and returns a representing the action.
+
+
+
+
+ Signals completions to this barrier. Returns the task for the current phase, which may already be completed. Returns null if the signal count is greater than the remaining participant count.
+
+ The number of completions to signal.
+ Whether the participants should be removed permanently.
+
+
+
+ Signals the specified number of completions to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+ The cancellation token used to cancel the wait. If this signal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Adds the specified number of participants to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+ The number of participants to add.
+
+
+
+ Adds a participant to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and asynchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and asynchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ An async-compatible condition variable. This type uses Mesa-style semantics (the notifying tasks do not yield).
+
+
+
+
+ The lock associated with this condition variable.
+
+
+
+
+ The queue of waiting tasks.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+
+
+
+ Gets a semi-unique identifier for this asynchronous condition variable.
+
+
+
+
+ Sends a signal to a single task waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Provides a context for asynchronous operations. This class is threadsafe.
+
+
+ may only be called once. After returns, the async context should be disposed.
+
+
+
+
+ The queue holding the actions to run.
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The number of outstanding operations, including actions in the queue.
+
+
+
+
+ Initializes a new instance of the class. This is an advanced operation; most people should use one of the static Run methods instead.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous context. This is the same identifier as the context's .
+
+
+
+
+ Increments the outstanding asynchronous operation count.
+
+
+
+
+ Decrements the outstanding asynchronous operation count.
+
+
+
+
+ Queues a task for execution by . If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The task to queue. May not be null.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Disposes all resources used by this class. This method should NOT be called while is executing.
+
+
+
+
+ Executes all queued actions. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from tasks that are supposed to propagate errors.
+
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task. This method will unwrap and propagate errors from the task.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task proxy.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task proxy. This method will unwrap and propagate errors from the task proxy.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Gets the current for this thread, or null if this thread is not currently running in an .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . Be careful with async delegates; you may need to call and to prevent early termination of this .
+
+
+
+
+ The implementation used by .
+
+
+
+
+ The async context.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context.
+
+
+
+ Gets the async context.
+
+
+
+
+ Dispatches an asynchronous message to the async context. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Dispatches an asynchronous message to the async context, and waits for it to complete.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Responds to the notification that an operation has started by incrementing the outstanding asynchronous operation count.
+
+
+
+
+ Responds to the notification that an operation has completed by decrementing the outstanding asynchronous operation count.
+
+
+
+
+ Creates a copy of the synchronization context.
+
+ A new object.
+
+
+
+ Returns a hash code for this instance.
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+ Determines whether the specified is equal to this instance. It is considered equal if it refers to the same underlying async context as this instance.
+
+ The to compare with this instance.
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+ A blocking queue.
+
+
+
+
+ The underlying blocking collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a blocking enumerable that removes items from the queue. This enumerable only completes after has been called.
+
+ A blocking enumerable that removes items from the queue.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Attempts to add the item to the queue. If the queue has been marked as complete for adding, this method returns false.
+
+ The item to enqueue.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Marks the queue as complete for adding, allowing the enumerator returned from to eventually complete. This method may be called several times.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ A task scheduler which schedules tasks to an async context.
+
+
+
+
+ The async context for this task scheduler.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context for this task scheduler. May not be null.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Queues a to the scheduler. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The to be queued.
+
+
+
+ Determines whether the provided can be executed synchronously in this call, and if it can, executes it.
+
+ The to be executed.
+ A Boolean denoting whether or not task has previously been queued. If this parameter is True, then the task may have been previously queued (scheduled); if False, then the task is known not to have been queued, and this call is being made in order to execute the task inline without queuing it.
+ A Boolean value indicating whether the task was executed inline.
+ The was already executed.
+
+
+
+ Indicates the maximum concurrency level this is able to support.
+
+
+
+
+ Exposes the base method.
+
+ The task to attempt to execute.
+
+
+
+ A thread that executes actions within an .
+
+
+
+
+ The child thread.
+
+
+
+
+ The asynchronous context executed by the child thread.
+
+
+
+
+ A flag used to ensure we only call once during complex join/dispose operations.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands. If is true, then the child thread is an STA thread (throwing if the platform does not support STA threads).
+
+
+
+
+ Gets the executed by this thread.
+
+
+
+
+ Permits the thread to exit, if we have not already done so.
+
+
+
+
+ Requests the thread to exit and returns a task representing the exit of the thread. The thread will exit when all outstanding asynchronous operations complete.
+
+
+
+
+ Requests the thread to exit.
+
+
+
+
+ Gets the for this thread, which can be used to schedule work to this thread.
+
+
+
+
+ An async-compatible countdown event.
+
+
+
+
+ The TCS used to signal this event.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ Creates an async-compatible countdown event.
+
+ The number of signals this event will need before it becomes set. Must be greater than zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous countdown event.
+
+
+
+
+ Gets the current number of remaining signals before this event becomes set.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Attempts to modify the current count by the specified amount. This method returns false if the new current count value would be invalid, or if the count has already reached zero.
+
+ The amount to change the current count. This may be positive or negative, but not zero.
+
+
+
+ Attempts to add the specified value to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Attempts to add the specified value to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Provides asynchronous wrappers.
+
+ The type of the result of the asychronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method. May not be null.
+ The end method. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap. May not be null.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event.
+ The event args.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event. May not be null.
+ The name of the event. May not be null.
+ The event args.
+
+
+
+ Manages the subscription to an event on a target object, triggering a task (and unsubscribing) when the event is raised.
+
+ The type of event arguments passed to the event.
+
+
+
+ The source for our task, which is returned to the user.
+
+
+
+
+ The subscription to the event.
+
+
+
+
+ The object that publishes the event.
+
+
+
+
+ The event to which we subscribe.
+
+
+
+
+ Subscribes to the specified event.
+
+ The object that publishes the event.
+ The event to which we subscribe.
+
+
+
+ Gets the task that is completed when the event is raised.
+
+
+
+
+ Private method that handles event completion. Do not call this method; it is public to avoid security problems when reflecting.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+ The result of the asynchronous operation.
+
+
+
+ Provides asynchronous wrappers.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method.
+ The end method.
+
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Wraps a with a . When the is signalled, the returned is completed. If the handle is already signalled, this method acts synchronously.
+
+ The to observe.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the handle is already signalled or the timeout is zero, this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is (successfully) completed. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled or the cancellation token is already cancelled, this method acts synchronously.
+
+ The to observe.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled, the timeout is zero, or the cancellation token is already cancelled, then this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+
+
+
+
+ Provides support for asynchronous lazy initialization. This type is fully threadsafe.
+
+ The type of object that is being asynchronously initialized.
+
+
+
+ The underlying lazy task.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Initializes a new instance of the class.
+
+ The asynchronous delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lazy instance.
+
+
+
+
+ Whether the asynchronous factory method has started. This is initially false and becomes true when this instance is awaited or after is called.
+
+
+
+
+ Asynchronous infrastructure support. This method permits instances of to be await'ed.
+
+
+
+
+ Starts the asynchronous initialization, if it has not already started.
+
+
+
+
+ A mutual exclusion lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ Whether the lock is taken by a task.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock.
+
+
+
+
+ A task that is completed with the key object for this lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock using the specified wait queue.
+
+ The wait queue used to manage waiters.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+
+
+
+ Releases the lock.
+
+
+
+
+ The disposable which releases the lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ An async-compatible manual-reset event.
+
+
+
+
+ The object used for synchronization.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Creates an async-compatible manual-reset event.
+
+ Whether the manual-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible manual-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous manual-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Sets the event, atomically completing every task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ Resets the event. If the event is already reset, this method does nothing.
+
+
+
+
+ An async-compatible monitor.
+
+
+
+
+ The lock.
+
+
+
+
+ The condition variable.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Gets a semi-unique identifier for this monitor.
+
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Synchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Sends a signal to a single task waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ An async-compatible producer/consumer queue.
+
+ The type of elements contained in the queue.
+
+
+
+ The underlying queue.
+
+
+
+
+ The maximum number of elements allowed in the queue.
+
+
+
+
+ The mutual-exclusion lock protecting the queue.
+
+
+
+
+ A condition variable that is signalled when the queue is not full.
+
+
+
+
+ A condition variable that is signalled when the queue is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the queue is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements and a maximum element count.
+
+ The initial elements to place in the queue.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements.
+
+ The initial elements to place in the queue.
+
+
+
+ Creates a new async-compatible producer/consumer queue with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue.
+
+
+
+
+ Whether the queue is empty.
+
+
+
+
+ Whether the queue is full.
+
+
+
+
+ Releases resources held by this instance. After disposal, any use of this instance is undefined.
+
+
+
+
+ Asynchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Attempts to enqueue an item.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related enqueue operations. May be null if this is the only enqueue operation.
+
+
+
+ Attempts to enqueue an item. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. This method may block the calling thread. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item.
+
+ A cancellation token that can be used to abort the dequeue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related dequeue operations. May be null if this is the only dequeue operation.
+
+
+
+ Attempts to dequeue an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ The result of a TryDequeue, DequeueFromAny, or TryDequeueFromAny operation.
+
+
+
+
+ The queue from which the item was dequeued, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The dequeued item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ A reader/writer lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as writers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as upgradeable readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to upgrade a reader lock to a writer lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The current upgradeable reader lock key, if any. If this is not null, then there is an upgradeable reader lock held.
+
+
+
+
+ Number of reader locks held (including an upgradeable reader lock, if applicable); -1 if a writer lock is held; 0 if no locks are held.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ A task that is completed with the reader key object for this lock.
+
+
+
+
+ A task that is completed with the writer key object for this lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Applies a continuation to the task that will call if the task is canceled. This method may not be called while holding the sync lock.
+
+ The task to observe for cancellation.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously upgrades a reader lock to a writer lock. This method assumes the sync lock is already held.
+
+
+
+
+ Downgrades a writer lock to a reader lock. This method assumes the sync lock is already held.
+
+
+
+
+ Grants lock(s) to waiting tasks. This method assumes the sync lock is already held.
+
+
+
+
+ Releases the lock as a reader.
+
+
+
+
+ Releases the lock as a writer.
+
+
+
+
+ Releases the lock as an upgradeable reader.
+
+
+
+
+ The disposable which releases the reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which releases the writer lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which manages the upgradeable reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ The task doing the upgrade.
+
+
+
+
+ A task that is completed with the upgrade key object for this key.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Gets a value indicating whether this lock has been upgraded to a write lock.
+
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+
+
+
+ Downgrades the writer lock to a reader lock.
+
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which downgrades an upgradeable reader key.
+
+
+
+
+ The upgradeable reader key to downgrade.
+
+
+
+
+ Creates the upgrade key for an upgradeable reader key.
+
+ The upgradeable reader key to downgrade. May not be null.
+
+
+
+ Downgrade the upgradeable reader key.
+
+
+
+
+ An async-compatible semaphore. Alternatively, you could use SemaphoreSlim on .NET 4.5 / Windows Store.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the semaphore.
+
+
+
+
+ The number of waits that will be immediately granted.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+ The wait queue used to manage waiters.
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous semaphore.
+
+
+
+
+ Gets the number of slots currently available on this semaphore.
+
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ A collection of cancelable instances. Implementations must be threadsafe and must work correctly if the caller is holding a lock.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ Gets whether the queue is empty.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. The returned task must support both synchronous and asynchronous waits.
+
+ The queued task.
+
+
+
+ Removes a single entry in the wait queue. Returns a disposable that completes that entry.
+
+ The result used to complete the wait queue entry. If this isn't needed, use default(T).
+
+
+
+ Removes all entries in the wait queue. Returns a disposable that completes all entries.
+
+ The result used to complete the wait queue entries. If this isn't needed, use default(T).
+
+
+
+ Attempts to remove an entry from the wait queue. Returns a disposable that cancels the entry.
+
+ The task to cancel.
+ A value indicating whether the entry was found and canceled.
+
+
+
+ Removes all entries from the wait queue. Returns a disposable that cancels all entries.
+
+
+
+
+ Provides extension methods for wait queues.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ A synchronization object taken while cancelling the entry.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ The default wait queue implementation, which uses a double-ended queue.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ An awaitable wrapper around a task whose result is disposable. The wrapper is not disposable, so this prevents usage errors like "using (MyAsync())" when the appropriate usage should be "using (await MyAsync())".
+
+ The type of the result of the underlying task.
+
+
+
+ The underlying task.
+
+
+
+
+ Initializes a new awaitable wrapper around the specified task.
+
+ The underlying task to wrap.
+
+
+
+ Returns the underlying task.
+
+
+
+
+ Implicit conversion to the underlying task.
+
+ The awaitable wrapper.
+
+
+
+ Infrastructure. Returns the task awaiter for the underlying task.
+
+
+
+
+ Infrastructure. Returns a configured task awaiter for the underlying task.
+
+ Whether to attempt to marshal the continuation back to the captured context.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Returns a that is canceled when this is canceled. This method will leak resources if the cancellation token is long-lived; use for a similar approach with proper resource management.
+
+ The to monitor.
+ A that is canceled when this is canceled.
+
+
+
+ Returns a which holds the task for this cancellation token.
+
+ The cancellation token to observe.
+
+
+
+ Holds the task for a cancellation token, as well as the token registration. The registration is disposed when this instance is disposed.
+
+
+
+
+ The cancellation token registration, if any. This is null if the registration was not necessary.
+
+
+
+
+ Creates a task for the specified cancellation token, registering with the token if necessary.
+
+ The cancellation token to observe.
+
+
+
+ Gets the task for the source cancellation token.
+
+
+
+
+ Disposes the cancellation token registration, if any. Note that this may cause to never complete.
+
+
+
+
+ Helper methods for cancellation tokens.
+
+
+
+
+ Initializes the static members.
+
+
+
+
+ Gets , a cancellation token that is never canceled.
+
+
+
+
+ Gets a cancellation token that is already canceled.
+
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+ The options to use for the task continuation.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+
+
+
+ Manages the deferrals for a "command" event that may have asynchonous handlers.
+
+
+
+
+ The countdown event, triggered when all deferrals have completed. This is null if there are no deferrals.
+
+
+
+
+ Gets a deferral. The deferral is complete when disposed.
+
+ The deferral.
+
+
+
+ Notifies the manager that all deferrals have been requested, and returns a task that is completed when all deferrals have completed.
+
+ A task that is completed when all deferrals have completed.
+
+
+
+ A deferral.
+
+
+
+
+ The countdown event of the deferral manager.
+
+
+
+
+ Creates a new deferral referencing the countdown event of the deferral manager.
+
+ The countdown event of the deferral manager.
+
+
+
+ Completes the deferral.
+
+
+
+
+ Provides helper (non-extension) methods dealing with exceptions.
+
+
+
+
+ Attempts to prepare the exception for re-throwing by preserving the stack trace. The returned exception should be immediately thrown.
+
+ The exception. May not be null.
+ The that was passed into this method.
+
+
+
+ Allocates Ids for instances on demand. 0 is an invalid/unassigned Id. Ids may be non-unique in very long-running systems. This is similar to the Id system used by and .
+
+ The type for which ids are generated.
+
+
+
+ The last id generated for this type. This is 0 if no ids have been generated.
+
+
+
+
+ Returns the id, allocating it if necessary.
+
+ A reference to the field containing the id.
+
+
+
+ A that may or may not also reference its own . Instances of this type should always be disposed.
+
+
+
+
+ The , if any. If this is not null, then is _cts.Token.
+
+
+
+
+ The . If is not null, then this is _cts.Token.
+
+
+
+
+ Creates a normalized cancellation token that can never be canceled.
+
+
+
+
+ Creates a normalized cancellation token from a . is set to the property of .
+
+ The source for this token.
+
+
+
+ Creates a normalized cancellation token from a . is set to .
+
+ The source for this token.
+
+
+
+ Releases any resources used by this normalized cancellation token.
+
+
+
+
+ Gets the for this normalized cancellation token.
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets a task that completes successfully when completes (successfully, faulted, or canceled). This property never changes and is never null.
+
+
+
+
+ Gets the current task status. This property raises a notification when the task completes.
+
+
+
+
+ Gets whether the task has completed. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task is busy (not completed). This property raises a notification when the value changes to false.
+
+
+
+
+ Gets whether the task has completed successfully. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task has been canceled. This property raises a notification only if the task is canceled (i.e., if the value changes to true).
+
+
+
+
+ Gets whether the task has faulted. This property raises a notification only if the task faults (i.e., if the value changes to true).
+
+
+
+
+ Gets the wrapped faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the error message for the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets the result of the task. Returns the default value of if the task has not completed successfully. This property raises a notification when the task completes successfully.
+
+
+
+
+ Factory for task completion notifiers.
+
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The type of the task result.
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ The source (controller) of a "pause token", which can be used to cooperatively pause and unpause operations.
+
+
+
+
+ The MRE that manages the "pause" logic. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether or not this source (and its tokens) are in the paused state.
+
+
+
+
+ Gets a pause token controlled by this source.
+
+
+
+
+ A type that allows an operation to be cooperatively paused.
+
+
+
+
+ The MRE that manages the "pause" logic, or null if this token can never be paused. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether this token can ever possibly be paused.
+
+
+
+
+ Whether or not this token is in the paused state.
+
+
+
+
+ Asynchronously waits until the pause token is not paused.
+
+
+
+
+ Asynchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ Synchronously waits until the pause token is not paused.
+
+
+
+
+ Synchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ A progress implementation that stores progress updates in a property. If this instance is created on a UI thread, its property is suitable for data binding.
+
+ The type of progress value.
+
+
+
+ The context of the thread that created this instance.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The initial progress value.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Occurs when the property value changes.
+
+
+
+
+ Provides helper types for .
+
+
+
+
+ Retrieves the current synchronization context, or the default synchronization context if there is no current synchronization context.
+
+
+
+
+ Utility class for temporarily switching implementations.
+
+
+
+
+ The previous .
+
+
+
+
+ Whether this object has already been disposed.
+
+
+
+
+ Initializes a new instance of the class, installing the new .
+
+ The new .
+
+
+
+ Restores the old .
+
+
+
+
+ Provides synchronous extension methods for tasks.
+
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ The result of the task.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The result of the task.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed.
+
+
+
+ Represents the producer side of a unbound to a delegate, providing access to the consumer side through the property.
+
+
+
+
+ The underlying TCS.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified state.
+
+ The state to use as the underlying 's .
+
+
+
+ Initializes a new instance of the class with the specified options.
+
+ The options to use when creating the underlying .
+
+
+
+ Initializes a new instance of the class with the specified state and options.
+
+ The state to use as the underlying 's .
+ The options to use when creating the underlying .
+
+
+
+ Gets the created by this .
+
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ The underlying has already been completed.
+
+
+
+ Transitions the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the target asynchronous operation.
+ The type of the result of the source asynchronous operation.
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ The delegate used to retrieve the result. This is only invoked if indicates successful completion. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a with the specified value, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Attempts to complete a , forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Provides completed task constants.
+
+
+
+
+ A task that has been completed with the value true.
+
+
+
+
+ A task that has been completed with the value false.
+
+
+
+
+ A task that has been completed with the value 0.
+
+
+
+
+ A task that has been completed with the value -1.
+
+
+
+
+ A that has been completed.
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides completed task constants.
+
+ The type of the task result.
+
+
+
+ A task that has been completed with the default value of .
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides extension methods for tasks.
+
+
+
+
+ Creates a new array of tasks which complete in order.
+
+ The type of the results of the tasks.
+ The tasks to order by completion.
+
+
+
+ Provides extension methods for task factories.
+
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ A double-ended queue (deque), which provides O(1) indexed access, O(1) removals from the front and back, amortized O(1) insertions to the front and back, and O(N) insertions and removals anywhere else (with the operations getting slower as the index approaches the middle).
+
+ The type of elements contained in the deque.
+
+
+
+ The default capacity.
+
+
+
+
+ The circular buffer that holds the view.
+
+
+
+
+ The offset into where the view begins.
+
+
+
+
+ Initializes a new instance of the class with the specified capacity.
+
+ The initial capacity. Must be greater than 0.
+
+
+
+ Initializes a new instance of the class with the elements from the specified collection.
+
+ The collection.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a value indicating whether this list is read-only. This implementation always returns false.
+
+ true if this list is read-only; otherwise, false.
+
+
+
+ Gets or sets the item at the specified index.
+
+ The index of the item to get or set.
+ is not a valid index in this list.
+ This property is set and the list is read-only.
+
+
+
+ Inserts an item to this list at the specified index.
+
+ The zero-based index at which should be inserted.
+ The object to insert into this list.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Determines the index of a specific item in this list.
+
+ The object to locate in this list.
+ The index of if found in this list; otherwise, -1.
+
+
+
+ Adds an item to the end of this list.
+
+ The object to add to this list.
+
+ This list is read-only.
+
+
+
+
+ Determines whether this list contains a specific value.
+
+ The object to locate in this list.
+
+ true if is found in this list; otherwise, false.
+
+
+
+
+ Copies the elements of this list to an , starting at a particular index.
+
+ The one-dimensional that is the destination of the elements copied from this slice. The must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+ is null.
+
+
+ is less than 0.
+
+
+ is equal to or greater than the length of .
+ -or-
+ The number of elements in the source is greater than the available space from to the end of the destination .
+
+
+
+
+ Removes the first occurrence of a specific object from this list.
+
+ The object to remove from this list.
+
+ true if was successfully removed from this list; otherwise, false. This method also returns false if is not found in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Checks the argument to see if it refers to a valid insertion point in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Checks the argument to see if it refers to an existing element in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an existing element for the source.
+
+
+
+ Checks the and arguments for validity when applied to a source of a given length. Allows 0-element ranges, including a 0-element range at the end of the source.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into source at which the range begins.
+ The number of elements in the range.
+ Either or is less than 0.
+ The range [offset, offset + count) is not within the range [0, sourceLength).
+
+
+
+ Gets a value indicating whether this instance is empty.
+
+
+
+
+ Gets a value indicating whether this instance is at full capacity.
+
+
+
+
+ Gets a value indicating whether the buffer is "split" (meaning the beginning of the view is at a later index in than the end).
+
+
+
+
+ Gets or sets the capacity for this deque. This value must always be greater than zero, and this property cannot be set to a value less than .
+
+ Capacity cannot be set to a value less than .
+
+
+
+ Gets the number of elements contained in this deque.
+
+ The number of elements contained in this deque.
+
+
+
+ Applies the offset to , resulting in a buffer index.
+
+ The deque index.
+ The buffer index.
+
+
+
+ Gets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element at the specified index.
+
+
+
+ Sets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Inserts an element at the specified view index.
+
+ The zero-based view index at which the element should be inserted. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Removes an element at the specified view index.
+
+ The zero-based view index of the element to remove. This index is guaranteed to be valid.
+
+
+
+ Increments by using modulo- arithmetic.
+
+ The value by which to increase . May not be negative.
+ The value of after it was incremented.
+
+
+
+ Decrements by using modulo- arithmetic.
+
+ The value by which to reduce . May not be negative or greater than .
+ The value of before it was decremented.
+
+
+
+ Inserts a single element to the back of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Inserts a single element to the front of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Removes and returns the last element in the view. must be false when this method is called.
+
+ The former last element.
+
+
+
+ Removes and returns the first element in the view. must be false when this method is called.
+
+ The former first element.
+
+
+
+ Inserts a range of elements into the view.
+
+ The index into the view at which the elements are to be inserted.
+ The elements to insert.
+ The number of elements in . Must be greater than zero, and the sum of and must be less than or equal to .
+
+
+
+ Removes a range of elements from the view.
+
+ The index into the view at which the range begins.
+ The number of elements in the range. This must be greater than 0 and less than or equal to .
+
+
+
+ Doubles the capacity if necessary to make room for one more element. When this method returns, is false.
+
+
+
+
+ Inserts a single element at the back of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a single element at the front of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a collection of elements into this deque.
+
+ The index at which the collection is inserted.
+ The collection of elements to insert.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Removes a range of elements from this deque.
+
+ The index into the deque at which the range begins.
+ The number of elements to remove.
+ Either or is less than 0.
+ The range [, + ) is not within the range [0, ).
+
+
+
+ Removes and returns the last element of this deque.
+
+ The former last element.
+ The deque is empty.
+
+
+
+ Removes and returns the first element of this deque.
+
+ The former first element.
+ The deque is empty.
+
+
+
+ Removes all items from this deque.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/net40/Nito.AsyncEx.Concurrent.dll b/packages/Nito.AsyncEx.4.0.1/lib/net40/Nito.AsyncEx.Concurrent.dll
new file mode 100644
index 000000000..aca25f828
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/net40/Nito.AsyncEx.Concurrent.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/net40/Nito.AsyncEx.Concurrent.xml b/packages/Nito.AsyncEx.4.0.1/lib/net40/Nito.AsyncEx.Concurrent.xml
new file mode 100644
index 000000000..497b59a89
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/net40/Nito.AsyncEx.Concurrent.xml
@@ -0,0 +1,401 @@
+
+
+
+ Nito.AsyncEx.Concurrent
+
+
+
+
+ An async-compatible producer/consumer collection.
+
+ The type of elements contained in the collection.
+
+
+
+ The underlying collection.
+
+
+
+
+ The maximum number of elements allowed in the collection.
+
+
+
+
+ The mutual-exclusion lock protecting the collection.
+
+
+
+
+ A condition variable that is signalled when the collection is not full.
+
+
+
+
+ A condition variable that is signalled when the collection is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the collection is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer collection wrapping the specified collection and with a maximum element count.
+
+ The collection to wrap.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer collection wrapping the specified collection.
+
+ The collection to wrap.
+
+
+
+ Creates a new async-compatible producer/consumer collection with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer collection.
+
+
+
+
+ Whether the collection is empty.
+
+
+
+
+ Whether the collection is full.
+
+
+
+
+ Asynchronously marks the producer/consumer collection as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer collection as complete for adding.
+
+
+
+
+ Attempts to add an item.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related add operations. May be null if this is the only add operation.
+
+
+
+ Attempts to add an item. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer collection has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer collection has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer collection.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to take an item.
+
+ A cancellation token that can be used to abort the take operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related take operations. May be null if this is the only take operation.
+
+
+
+ Attempts to take an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection.
+
+
+
+
+ Attempts to take an item from the producer/consumer collection. This method may block the calling thread.
+
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed.
+
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed. This method may block the calling thread.
+
+
+
+
+ The result of a TryTake, TakeFromAny, or TryTakeFromAny operation.
+
+
+
+
+ The collection from which the item was taken, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The producer/consumer collections.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The producer/consumer collections.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The array of producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The array of producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The array of producer/consumer collections.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The array of producer/consumer collections.
+
+
+
+ A progress implementation that sends progress reports to a producer/consumer collection.
+
+ The type of progress value.
+
+
+
+ The producer/consumer collection that receives progress reports.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The producer/consumer collection that receives progress reports.
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/net40/Nito.AsyncEx.Enlightenment.dll b/packages/Nito.AsyncEx.4.0.1/lib/net40/Nito.AsyncEx.Enlightenment.dll
new file mode 100644
index 000000000..b22b8e380
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/net40/Nito.AsyncEx.Enlightenment.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/net40/Nito.AsyncEx.Enlightenment.xml b/packages/Nito.AsyncEx.4.0.1/lib/net40/Nito.AsyncEx.Enlightenment.xml
new file mode 100644
index 000000000..3f7ec4886
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/net40/Nito.AsyncEx.Enlightenment.xml
@@ -0,0 +1,39 @@
+
+
+
+ Nito.AsyncEx.Enlightenment
+
+
+
+
+ Verifies platform enlightenment.
+
+
+
+
+ Returns a value indicating whether the correct platform enlightenment provider has been loaded.
+
+
+
+
+ The TaskCreationOptions.DenyChildAttach value, if it exists; otherwise, 0.
+
+
+
+
+ A delegate that will call ExceptionDispatchInfo.Capture followed by ExceptionDispatchInfo.Throw, or null if the ExceptionDispatchInfo type does not exist.
+
+
+
+
+ A delegate that will call Exception.PrepForRemoting, or null if the method does not exist. This member is always null if is non-null.
+
+
+
+
+ Attempts to add the original stack trace to the collection.
+
+ The exception. May not be null.
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/net40/Nito.AsyncEx.dll b/packages/Nito.AsyncEx.4.0.1/lib/net40/Nito.AsyncEx.dll
new file mode 100644
index 000000000..55e19452a
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/net40/Nito.AsyncEx.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/net40/Nito.AsyncEx.xml b/packages/Nito.AsyncEx.4.0.1/lib/net40/Nito.AsyncEx.xml
new file mode 100644
index 000000000..d497cca9c
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/net40/Nito.AsyncEx.xml
@@ -0,0 +1,3930 @@
+
+
+
+ Nito.AsyncEx
+
+
+
+
+ An async-compatible auto-reset event.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible auto-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous auto-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event. This method may block the calling thread.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately.
+
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately. This method may block the calling thread.
+
+
+
+
+ Sets the event, atomically completing a task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ An async-compatible barrier.
+
+
+
+
+ Mutex used to control access to other fields.
+
+
+
+
+ The TCS used to signal the current phase.
+
+
+
+
+ The current phase.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ The total number of participants.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The asynchronous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ The synchonous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Gets a semi-unique identifier for this asynchronous barrier.
+
+
+
+
+ Gets the current phase of the barrier.
+
+
+
+
+ Gets the number of participants in this barrier.
+
+
+
+
+ Gets the number of participants for this phase that have not yet signalled.
+
+
+
+
+ Starts executing the post-phase action and returns a representing the action.
+
+
+
+
+ Signals completions to this barrier. Returns the task for the current phase, which may already be completed. Returns null if the signal count is greater than the remaining participant count.
+
+ The number of completions to signal.
+ Whether the participants should be removed permanently.
+
+
+
+ Signals the specified number of completions to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+ The cancellation token used to cancel the wait. If this signal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Adds the specified number of participants to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+ The number of participants to add.
+
+
+
+ Adds a participant to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and asynchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and asynchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ An async-compatible condition variable. This type uses Mesa-style semantics (the notifying tasks do not yield).
+
+
+
+
+ The lock associated with this condition variable.
+
+
+
+
+ The queue of waiting tasks.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+
+
+
+ Gets a semi-unique identifier for this asynchronous condition variable.
+
+
+
+
+ Sends a signal to a single task waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Provides a context for asynchronous operations. This class is threadsafe.
+
+
+ may only be called once. After returns, the async context should be disposed.
+
+
+
+
+ The queue holding the actions to run.
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The number of outstanding operations, including actions in the queue.
+
+
+
+
+ Initializes a new instance of the class. This is an advanced operation; most people should use one of the static Run methods instead.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous context. This is the same identifier as the context's .
+
+
+
+
+ Increments the outstanding asynchronous operation count.
+
+
+
+
+ Decrements the outstanding asynchronous operation count.
+
+
+
+
+ Queues a task for execution by . If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The task to queue. May not be null.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Disposes all resources used by this class. This method should NOT be called while is executing.
+
+
+
+
+ Executes all queued actions. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from tasks that are supposed to propagate errors.
+
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task. This method will unwrap and propagate errors from the task.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task proxy.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task proxy. This method will unwrap and propagate errors from the task proxy.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Gets the current for this thread, or null if this thread is not currently running in an .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . Be careful with async delegates; you may need to call and to prevent early termination of this .
+
+
+
+
+ The implementation used by .
+
+
+
+
+ The async context.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context.
+
+
+
+ Gets the async context.
+
+
+
+
+ Dispatches an asynchronous message to the async context. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Dispatches an asynchronous message to the async context, and waits for it to complete.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Responds to the notification that an operation has started by incrementing the outstanding asynchronous operation count.
+
+
+
+
+ Responds to the notification that an operation has completed by decrementing the outstanding asynchronous operation count.
+
+
+
+
+ Creates a copy of the synchronization context.
+
+ A new object.
+
+
+
+ Returns a hash code for this instance.
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+ Determines whether the specified is equal to this instance. It is considered equal if it refers to the same underlying async context as this instance.
+
+ The to compare with this instance.
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+ A blocking queue.
+
+
+
+
+ The underlying blocking collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a blocking enumerable that removes items from the queue. This enumerable only completes after has been called.
+
+ A blocking enumerable that removes items from the queue.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Attempts to add the item to the queue. If the queue has been marked as complete for adding, this method returns false.
+
+ The item to enqueue.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Marks the queue as complete for adding, allowing the enumerator returned from to eventually complete. This method may be called several times.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ A task scheduler which schedules tasks to an async context.
+
+
+
+
+ The async context for this task scheduler.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context for this task scheduler. May not be null.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Queues a to the scheduler. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The to be queued.
+
+
+
+ Determines whether the provided can be executed synchronously in this call, and if it can, executes it.
+
+ The to be executed.
+ A Boolean denoting whether or not task has previously been queued. If this parameter is True, then the task may have been previously queued (scheduled); if False, then the task is known not to have been queued, and this call is being made in order to execute the task inline without queuing it.
+ A Boolean value indicating whether the task was executed inline.
+ The was already executed.
+
+
+
+ Indicates the maximum concurrency level this is able to support.
+
+
+
+
+ Exposes the base method.
+
+ The task to attempt to execute.
+
+
+
+ A thread that executes actions within an .
+
+
+
+
+ The child thread.
+
+
+
+
+ The asynchronous context executed by the child thread.
+
+
+
+
+ A flag used to ensure we only call once during complex join/dispose operations.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands. If is true, then the child thread is an STA thread (throwing if the platform does not support STA threads).
+
+
+
+
+ Gets the executed by this thread.
+
+
+
+
+ Permits the thread to exit, if we have not already done so.
+
+
+
+
+ Requests the thread to exit and returns a task representing the exit of the thread. The thread will exit when all outstanding asynchronous operations complete.
+
+
+
+
+ Requests the thread to exit.
+
+
+
+
+ Gets the for this thread, which can be used to schedule work to this thread.
+
+
+
+
+ An async-compatible countdown event.
+
+
+
+
+ The TCS used to signal this event.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ Creates an async-compatible countdown event.
+
+ The number of signals this event will need before it becomes set. Must be greater than zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous countdown event.
+
+
+
+
+ Gets the current number of remaining signals before this event becomes set.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Attempts to modify the current count by the specified amount. This method returns false if the new current count value would be invalid, or if the count has already reached zero.
+
+ The amount to change the current count. This may be positive or negative, but not zero.
+
+
+
+ Attempts to add the specified value to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Attempts to add the specified value to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Provides asynchronous wrappers.
+
+ The type of the result of the asychronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method. May not be null.
+ The end method. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap. May not be null.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event.
+ The event args.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event. May not be null.
+ The name of the event. May not be null.
+ The event args.
+
+
+
+ Manages the subscription to an event on a target object, triggering a task (and unsubscribing) when the event is raised.
+
+ The type of event arguments passed to the event.
+
+
+
+ The source for our task, which is returned to the user.
+
+
+
+
+ The subscription to the event.
+
+
+
+
+ The object that publishes the event.
+
+
+
+
+ The event to which we subscribe.
+
+
+
+
+ Subscribes to the specified event.
+
+ The object that publishes the event.
+ The event to which we subscribe.
+
+
+
+ Gets the task that is completed when the event is raised.
+
+
+
+
+ Private method that handles event completion. Do not call this method; it is public to avoid security problems when reflecting.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+ The result of the asynchronous operation.
+
+
+
+ Provides asynchronous wrappers.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method.
+ The end method.
+
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Wraps a with a . When the is signalled, the returned is completed. If the handle is already signalled, this method acts synchronously.
+
+ The to observe.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the handle is already signalled or the timeout is zero, this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is (successfully) completed. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled or the cancellation token is already cancelled, this method acts synchronously.
+
+ The to observe.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled, the timeout is zero, or the cancellation token is already cancelled, then this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+
+
+
+
+ Provides support for asynchronous lazy initialization. This type is fully threadsafe.
+
+ The type of object that is being asynchronously initialized.
+
+
+
+ The underlying lazy task.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Initializes a new instance of the class.
+
+ The asynchronous delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lazy instance.
+
+
+
+
+ Whether the asynchronous factory method has started. This is initially false and becomes true when this instance is awaited or after is called.
+
+
+
+
+ Asynchronous infrastructure support. This method permits instances of to be await'ed.
+
+
+
+
+ Starts the asynchronous initialization, if it has not already started.
+
+
+
+
+ A mutual exclusion lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ Whether the lock is taken by a task.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock.
+
+
+
+
+ A task that is completed with the key object for this lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock using the specified wait queue.
+
+ The wait queue used to manage waiters.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+
+
+
+ Releases the lock.
+
+
+
+
+ The disposable which releases the lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ An async-compatible manual-reset event.
+
+
+
+
+ The object used for synchronization.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Creates an async-compatible manual-reset event.
+
+ Whether the manual-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible manual-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous manual-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Sets the event, atomically completing every task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ Resets the event. If the event is already reset, this method does nothing.
+
+
+
+
+ An async-compatible monitor.
+
+
+
+
+ The lock.
+
+
+
+
+ The condition variable.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Gets a semi-unique identifier for this monitor.
+
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Synchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Sends a signal to a single task waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ An async-compatible producer/consumer queue.
+
+ The type of elements contained in the queue.
+
+
+
+ The underlying queue.
+
+
+
+
+ The maximum number of elements allowed in the queue.
+
+
+
+
+ The mutual-exclusion lock protecting the queue.
+
+
+
+
+ A condition variable that is signalled when the queue is not full.
+
+
+
+
+ A condition variable that is signalled when the queue is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the queue is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements and a maximum element count.
+
+ The initial elements to place in the queue.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements.
+
+ The initial elements to place in the queue.
+
+
+
+ Creates a new async-compatible producer/consumer queue with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue.
+
+
+
+
+ Whether the queue is empty.
+
+
+
+
+ Whether the queue is full.
+
+
+
+
+ Releases resources held by this instance. After disposal, any use of this instance is undefined.
+
+
+
+
+ Asynchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Attempts to enqueue an item.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related enqueue operations. May be null if this is the only enqueue operation.
+
+
+
+ Attempts to enqueue an item. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. This method may block the calling thread. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item.
+
+ A cancellation token that can be used to abort the dequeue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related dequeue operations. May be null if this is the only dequeue operation.
+
+
+
+ Attempts to dequeue an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ The result of a TryDequeue, DequeueFromAny, or TryDequeueFromAny operation.
+
+
+
+
+ The queue from which the item was dequeued, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The dequeued item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ A reader/writer lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as writers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as upgradeable readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to upgrade a reader lock to a writer lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The current upgradeable reader lock key, if any. If this is not null, then there is an upgradeable reader lock held.
+
+
+
+
+ Number of reader locks held (including an upgradeable reader lock, if applicable); -1 if a writer lock is held; 0 if no locks are held.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ A task that is completed with the reader key object for this lock.
+
+
+
+
+ A task that is completed with the writer key object for this lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Applies a continuation to the task that will call if the task is canceled. This method may not be called while holding the sync lock.
+
+ The task to observe for cancellation.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously upgrades a reader lock to a writer lock. This method assumes the sync lock is already held.
+
+
+
+
+ Downgrades a writer lock to a reader lock. This method assumes the sync lock is already held.
+
+
+
+
+ Grants lock(s) to waiting tasks. This method assumes the sync lock is already held.
+
+
+
+
+ Releases the lock as a reader.
+
+
+
+
+ Releases the lock as a writer.
+
+
+
+
+ Releases the lock as an upgradeable reader.
+
+
+
+
+ The disposable which releases the reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which releases the writer lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which manages the upgradeable reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ The task doing the upgrade.
+
+
+
+
+ A task that is completed with the upgrade key object for this key.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Gets a value indicating whether this lock has been upgraded to a write lock.
+
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+
+
+
+ Downgrades the writer lock to a reader lock.
+
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which downgrades an upgradeable reader key.
+
+
+
+
+ The upgradeable reader key to downgrade.
+
+
+
+
+ Creates the upgrade key for an upgradeable reader key.
+
+ The upgradeable reader key to downgrade. May not be null.
+
+
+
+ Downgrade the upgradeable reader key.
+
+
+
+
+ An async-compatible semaphore. Alternatively, you could use SemaphoreSlim on .NET 4.5 / Windows Store.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the semaphore.
+
+
+
+
+ The number of waits that will be immediately granted.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+ The wait queue used to manage waiters.
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous semaphore.
+
+
+
+
+ Gets the number of slots currently available on this semaphore.
+
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ A collection of cancelable instances. Implementations must be threadsafe and must work correctly if the caller is holding a lock.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ Gets whether the queue is empty.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. The returned task must support both synchronous and asynchronous waits.
+
+ The queued task.
+
+
+
+ Removes a single entry in the wait queue. Returns a disposable that completes that entry.
+
+ The result used to complete the wait queue entry. If this isn't needed, use default(T).
+
+
+
+ Removes all entries in the wait queue. Returns a disposable that completes all entries.
+
+ The result used to complete the wait queue entries. If this isn't needed, use default(T).
+
+
+
+ Attempts to remove an entry from the wait queue. Returns a disposable that cancels the entry.
+
+ The task to cancel.
+ A value indicating whether the entry was found and canceled.
+
+
+
+ Removes all entries from the wait queue. Returns a disposable that cancels all entries.
+
+
+
+
+ Provides extension methods for wait queues.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ A synchronization object taken while cancelling the entry.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ The default wait queue implementation, which uses a double-ended queue.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ An awaitable wrapper around a task whose result is disposable. The wrapper is not disposable, so this prevents usage errors like "using (MyAsync())" when the appropriate usage should be "using (await MyAsync())".
+
+ The type of the result of the underlying task.
+
+
+
+ The underlying task.
+
+
+
+
+ Initializes a new awaitable wrapper around the specified task.
+
+ The underlying task to wrap.
+
+
+
+ Returns the underlying task.
+
+
+
+
+ Implicit conversion to the underlying task.
+
+ The awaitable wrapper.
+
+
+
+ Infrastructure. Returns the task awaiter for the underlying task.
+
+
+
+
+ Infrastructure. Returns a configured task awaiter for the underlying task.
+
+ Whether to attempt to marshal the continuation back to the captured context.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Returns a that is canceled when this is canceled. This method will leak resources if the cancellation token is long-lived; use for a similar approach with proper resource management.
+
+ The to monitor.
+ A that is canceled when this is canceled.
+
+
+
+ Returns a which holds the task for this cancellation token.
+
+ The cancellation token to observe.
+
+
+
+ Holds the task for a cancellation token, as well as the token registration. The registration is disposed when this instance is disposed.
+
+
+
+
+ The cancellation token registration, if any. This is null if the registration was not necessary.
+
+
+
+
+ Creates a task for the specified cancellation token, registering with the token if necessary.
+
+ The cancellation token to observe.
+
+
+
+ Gets the task for the source cancellation token.
+
+
+
+
+ Disposes the cancellation token registration, if any. Note that this may cause to never complete.
+
+
+
+
+ Helper methods for cancellation tokens.
+
+
+
+
+ Initializes the static members.
+
+
+
+
+ Gets , a cancellation token that is never canceled.
+
+
+
+
+ Gets a cancellation token that is already canceled.
+
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+ The options to use for the task continuation.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+
+
+
+ Manages the deferrals for a "command" event that may have asynchonous handlers.
+
+
+
+
+ The countdown event, triggered when all deferrals have completed. This is null if there are no deferrals.
+
+
+
+
+ Gets a deferral. The deferral is complete when disposed.
+
+ The deferral.
+
+
+
+ Notifies the manager that all deferrals have been requested, and returns a task that is completed when all deferrals have completed.
+
+ A task that is completed when all deferrals have completed.
+
+
+
+ A deferral.
+
+
+
+
+ The countdown event of the deferral manager.
+
+
+
+
+ Creates a new deferral referencing the countdown event of the deferral manager.
+
+ The countdown event of the deferral manager.
+
+
+
+ Completes the deferral.
+
+
+
+
+ Provides helper (non-extension) methods dealing with exceptions.
+
+
+
+
+ Attempts to prepare the exception for re-throwing by preserving the stack trace. The returned exception should be immediately thrown.
+
+ The exception. May not be null.
+ The that was passed into this method.
+
+
+
+ Allocates Ids for instances on demand. 0 is an invalid/unassigned Id. Ids may be non-unique in very long-running systems. This is similar to the Id system used by and .
+
+ The type for which ids are generated.
+
+
+
+ The last id generated for this type. This is 0 if no ids have been generated.
+
+
+
+
+ Returns the id, allocating it if necessary.
+
+ A reference to the field containing the id.
+
+
+
+ A that may or may not also reference its own . Instances of this type should always be disposed.
+
+
+
+
+ The , if any. If this is not null, then is _cts.Token.
+
+
+
+
+ The . If is not null, then this is _cts.Token.
+
+
+
+
+ Creates a normalized cancellation token that can never be canceled.
+
+
+
+
+ Creates a normalized cancellation token from a . is set to the property of .
+
+ The source for this token.
+
+
+
+ Creates a normalized cancellation token from a . is set to .
+
+ The source for this token.
+
+
+
+ Releases any resources used by this normalized cancellation token.
+
+
+
+
+ Gets the for this normalized cancellation token.
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets a task that completes successfully when completes (successfully, faulted, or canceled). This property never changes and is never null.
+
+
+
+
+ Gets the current task status. This property raises a notification when the task completes.
+
+
+
+
+ Gets whether the task has completed. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task is busy (not completed). This property raises a notification when the value changes to false.
+
+
+
+
+ Gets whether the task has completed successfully. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task has been canceled. This property raises a notification only if the task is canceled (i.e., if the value changes to true).
+
+
+
+
+ Gets whether the task has faulted. This property raises a notification only if the task faults (i.e., if the value changes to true).
+
+
+
+
+ Gets the wrapped faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the error message for the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets the result of the task. Returns the default value of if the task has not completed successfully. This property raises a notification when the task completes successfully.
+
+
+
+
+ Factory for task completion notifiers.
+
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The type of the task result.
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ The source (controller) of a "pause token", which can be used to cooperatively pause and unpause operations.
+
+
+
+
+ The MRE that manages the "pause" logic. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether or not this source (and its tokens) are in the paused state.
+
+
+
+
+ Gets a pause token controlled by this source.
+
+
+
+
+ A type that allows an operation to be cooperatively paused.
+
+
+
+
+ The MRE that manages the "pause" logic, or null if this token can never be paused. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether this token can ever possibly be paused.
+
+
+
+
+ Whether or not this token is in the paused state.
+
+
+
+
+ Asynchronously waits until the pause token is not paused.
+
+
+
+
+ Asynchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ Synchronously waits until the pause token is not paused.
+
+
+
+
+ Synchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ A progress implementation that stores progress updates in a property. If this instance is created on a UI thread, its property is suitable for data binding.
+
+ The type of progress value.
+
+
+
+ The context of the thread that created this instance.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The initial progress value.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Occurs when the property value changes.
+
+
+
+
+ Provides helper types for .
+
+
+
+
+ Retrieves the current synchronization context, or the default synchronization context if there is no current synchronization context.
+
+
+
+
+ Utility class for temporarily switching implementations.
+
+
+
+
+ The previous .
+
+
+
+
+ Whether this object has already been disposed.
+
+
+
+
+ Initializes a new instance of the class, installing the new .
+
+ The new .
+
+
+
+ Restores the old .
+
+
+
+
+ Provides synchronous extension methods for tasks.
+
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ The result of the task.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The result of the task.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed.
+
+
+
+ Represents the producer side of a unbound to a delegate, providing access to the consumer side through the property.
+
+
+
+
+ The underlying TCS.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified state.
+
+ The state to use as the underlying 's .
+
+
+
+ Initializes a new instance of the class with the specified options.
+
+ The options to use when creating the underlying .
+
+
+
+ Initializes a new instance of the class with the specified state and options.
+
+ The state to use as the underlying 's .
+ The options to use when creating the underlying .
+
+
+
+ Gets the created by this .
+
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ The underlying has already been completed.
+
+
+
+ Transitions the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the target asynchronous operation.
+ The type of the result of the source asynchronous operation.
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ The delegate used to retrieve the result. This is only invoked if indicates successful completion. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a with the specified value, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Attempts to complete a , forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Provides completed task constants.
+
+
+
+
+ A task that has been completed with the value true.
+
+
+
+
+ A task that has been completed with the value false.
+
+
+
+
+ A task that has been completed with the value 0.
+
+
+
+
+ A task that has been completed with the value -1.
+
+
+
+
+ A that has been completed.
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides completed task constants.
+
+ The type of the task result.
+
+
+
+ A task that has been completed with the default value of .
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides extension methods for tasks.
+
+
+
+
+ Creates a new array of tasks which complete in order.
+
+ The type of the results of the tasks.
+ The tasks to order by completion.
+
+
+
+ Provides extension methods for task factories.
+
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ A double-ended queue (deque), which provides O(1) indexed access, O(1) removals from the front and back, amortized O(1) insertions to the front and back, and O(N) insertions and removals anywhere else (with the operations getting slower as the index approaches the middle).
+
+ The type of elements contained in the deque.
+
+
+
+ The default capacity.
+
+
+
+
+ The circular buffer that holds the view.
+
+
+
+
+ The offset into where the view begins.
+
+
+
+
+ Initializes a new instance of the class with the specified capacity.
+
+ The initial capacity. Must be greater than 0.
+
+
+
+ Initializes a new instance of the class with the elements from the specified collection.
+
+ The collection.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a value indicating whether this list is read-only. This implementation always returns false.
+
+ true if this list is read-only; otherwise, false.
+
+
+
+ Gets or sets the item at the specified index.
+
+ The index of the item to get or set.
+ is not a valid index in this list.
+ This property is set and the list is read-only.
+
+
+
+ Inserts an item to this list at the specified index.
+
+ The zero-based index at which should be inserted.
+ The object to insert into this list.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Determines the index of a specific item in this list.
+
+ The object to locate in this list.
+ The index of if found in this list; otherwise, -1.
+
+
+
+ Adds an item to the end of this list.
+
+ The object to add to this list.
+
+ This list is read-only.
+
+
+
+
+ Determines whether this list contains a specific value.
+
+ The object to locate in this list.
+
+ true if is found in this list; otherwise, false.
+
+
+
+
+ Copies the elements of this list to an , starting at a particular index.
+
+ The one-dimensional that is the destination of the elements copied from this slice. The must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+ is null.
+
+
+ is less than 0.
+
+
+ is equal to or greater than the length of .
+ -or-
+ The number of elements in the source is greater than the available space from to the end of the destination .
+
+
+
+
+ Removes the first occurrence of a specific object from this list.
+
+ The object to remove from this list.
+
+ true if was successfully removed from this list; otherwise, false. This method also returns false if is not found in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Checks the argument to see if it refers to a valid insertion point in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Checks the argument to see if it refers to an existing element in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an existing element for the source.
+
+
+
+ Checks the and arguments for validity when applied to a source of a given length. Allows 0-element ranges, including a 0-element range at the end of the source.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into source at which the range begins.
+ The number of elements in the range.
+ Either or is less than 0.
+ The range [offset, offset + count) is not within the range [0, sourceLength).
+
+
+
+ Gets a value indicating whether this instance is empty.
+
+
+
+
+ Gets a value indicating whether this instance is at full capacity.
+
+
+
+
+ Gets a value indicating whether the buffer is "split" (meaning the beginning of the view is at a later index in than the end).
+
+
+
+
+ Gets or sets the capacity for this deque. This value must always be greater than zero, and this property cannot be set to a value less than .
+
+ Capacity cannot be set to a value less than .
+
+
+
+ Gets the number of elements contained in this deque.
+
+ The number of elements contained in this deque.
+
+
+
+ Applies the offset to , resulting in a buffer index.
+
+ The deque index.
+ The buffer index.
+
+
+
+ Gets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element at the specified index.
+
+
+
+ Sets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Inserts an element at the specified view index.
+
+ The zero-based view index at which the element should be inserted. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Removes an element at the specified view index.
+
+ The zero-based view index of the element to remove. This index is guaranteed to be valid.
+
+
+
+ Increments by using modulo- arithmetic.
+
+ The value by which to increase . May not be negative.
+ The value of after it was incremented.
+
+
+
+ Decrements by using modulo- arithmetic.
+
+ The value by which to reduce . May not be negative or greater than .
+ The value of before it was decremented.
+
+
+
+ Inserts a single element to the back of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Inserts a single element to the front of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Removes and returns the last element in the view. must be false when this method is called.
+
+ The former last element.
+
+
+
+ Removes and returns the first element in the view. must be false when this method is called.
+
+ The former first element.
+
+
+
+ Inserts a range of elements into the view.
+
+ The index into the view at which the elements are to be inserted.
+ The elements to insert.
+ The number of elements in . Must be greater than zero, and the sum of and must be less than or equal to .
+
+
+
+ Removes a range of elements from the view.
+
+ The index into the view at which the range begins.
+ The number of elements in the range. This must be greater than 0 and less than or equal to .
+
+
+
+ Doubles the capacity if necessary to make room for one more element. When this method returns, is false.
+
+
+
+
+ Inserts a single element at the back of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a single element at the front of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a collection of elements into this deque.
+
+ The index at which the collection is inserted.
+ The collection of elements to insert.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Removes a range of elements from this deque.
+
+ The index into the deque at which the range begins.
+ The number of elements to remove.
+ Either or is less than 0.
+ The range [, + ) is not within the range [0, ).
+
+
+
+ Removes and returns the last element of this deque.
+
+ The former last element.
+ The deque is empty.
+
+
+
+ Removes and returns the first element of this deque.
+
+ The former first element.
+ The deque is empty.
+
+
+
+ Removes all items from this deque.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/net45/Nito.AsyncEx.Concurrent.dll b/packages/Nito.AsyncEx.4.0.1/lib/net45/Nito.AsyncEx.Concurrent.dll
new file mode 100644
index 000000000..8f91a729a
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/net45/Nito.AsyncEx.Concurrent.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/net45/Nito.AsyncEx.Concurrent.xml b/packages/Nito.AsyncEx.4.0.1/lib/net45/Nito.AsyncEx.Concurrent.xml
new file mode 100644
index 000000000..497b59a89
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/net45/Nito.AsyncEx.Concurrent.xml
@@ -0,0 +1,401 @@
+
+
+
+ Nito.AsyncEx.Concurrent
+
+
+
+
+ An async-compatible producer/consumer collection.
+
+ The type of elements contained in the collection.
+
+
+
+ The underlying collection.
+
+
+
+
+ The maximum number of elements allowed in the collection.
+
+
+
+
+ The mutual-exclusion lock protecting the collection.
+
+
+
+
+ A condition variable that is signalled when the collection is not full.
+
+
+
+
+ A condition variable that is signalled when the collection is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the collection is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer collection wrapping the specified collection and with a maximum element count.
+
+ The collection to wrap.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer collection wrapping the specified collection.
+
+ The collection to wrap.
+
+
+
+ Creates a new async-compatible producer/consumer collection with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer collection.
+
+
+
+
+ Whether the collection is empty.
+
+
+
+
+ Whether the collection is full.
+
+
+
+
+ Asynchronously marks the producer/consumer collection as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer collection as complete for adding.
+
+
+
+
+ Attempts to add an item.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related add operations. May be null if this is the only add operation.
+
+
+
+ Attempts to add an item. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer collection has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer collection has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer collection.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to take an item.
+
+ A cancellation token that can be used to abort the take operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related take operations. May be null if this is the only take operation.
+
+
+
+ Attempts to take an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection.
+
+
+
+
+ Attempts to take an item from the producer/consumer collection. This method may block the calling thread.
+
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed.
+
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed. This method may block the calling thread.
+
+
+
+
+ The result of a TryTake, TakeFromAny, or TryTakeFromAny operation.
+
+
+
+
+ The collection from which the item was taken, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The producer/consumer collections.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The producer/consumer collections.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The array of producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The array of producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The array of producer/consumer collections.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The array of producer/consumer collections.
+
+
+
+ A progress implementation that sends progress reports to a producer/consumer collection.
+
+ The type of progress value.
+
+
+
+ The producer/consumer collection that receives progress reports.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The producer/consumer collection that receives progress reports.
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/net45/Nito.AsyncEx.Enlightenment.dll b/packages/Nito.AsyncEx.4.0.1/lib/net45/Nito.AsyncEx.Enlightenment.dll
new file mode 100644
index 000000000..e21d38061
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/net45/Nito.AsyncEx.Enlightenment.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/net45/Nito.AsyncEx.Enlightenment.xml b/packages/Nito.AsyncEx.4.0.1/lib/net45/Nito.AsyncEx.Enlightenment.xml
new file mode 100644
index 000000000..db9ce6e4a
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/net45/Nito.AsyncEx.Enlightenment.xml
@@ -0,0 +1,18 @@
+
+
+
+ Nito.AsyncEx.Enlightenment
+
+
+
+
+ Verifies platform enlightenment.
+
+
+
+
+ Returns a value indicating whether the correct platform enlightenment provider has been loaded.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/net45/Nito.AsyncEx.dll b/packages/Nito.AsyncEx.4.0.1/lib/net45/Nito.AsyncEx.dll
new file mode 100644
index 000000000..e414e7a28
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/net45/Nito.AsyncEx.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/net45/Nito.AsyncEx.xml b/packages/Nito.AsyncEx.4.0.1/lib/net45/Nito.AsyncEx.xml
new file mode 100644
index 000000000..d497cca9c
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/net45/Nito.AsyncEx.xml
@@ -0,0 +1,3930 @@
+
+
+
+ Nito.AsyncEx
+
+
+
+
+ An async-compatible auto-reset event.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible auto-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous auto-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event. This method may block the calling thread.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately.
+
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately. This method may block the calling thread.
+
+
+
+
+ Sets the event, atomically completing a task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ An async-compatible barrier.
+
+
+
+
+ Mutex used to control access to other fields.
+
+
+
+
+ The TCS used to signal the current phase.
+
+
+
+
+ The current phase.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ The total number of participants.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The asynchronous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ The synchonous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Gets a semi-unique identifier for this asynchronous barrier.
+
+
+
+
+ Gets the current phase of the barrier.
+
+
+
+
+ Gets the number of participants in this barrier.
+
+
+
+
+ Gets the number of participants for this phase that have not yet signalled.
+
+
+
+
+ Starts executing the post-phase action and returns a representing the action.
+
+
+
+
+ Signals completions to this barrier. Returns the task for the current phase, which may already be completed. Returns null if the signal count is greater than the remaining participant count.
+
+ The number of completions to signal.
+ Whether the participants should be removed permanently.
+
+
+
+ Signals the specified number of completions to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+ The cancellation token used to cancel the wait. If this signal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Adds the specified number of participants to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+ The number of participants to add.
+
+
+
+ Adds a participant to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and asynchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and asynchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ An async-compatible condition variable. This type uses Mesa-style semantics (the notifying tasks do not yield).
+
+
+
+
+ The lock associated with this condition variable.
+
+
+
+
+ The queue of waiting tasks.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+
+
+
+ Gets a semi-unique identifier for this asynchronous condition variable.
+
+
+
+
+ Sends a signal to a single task waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Provides a context for asynchronous operations. This class is threadsafe.
+
+
+ may only be called once. After returns, the async context should be disposed.
+
+
+
+
+ The queue holding the actions to run.
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The number of outstanding operations, including actions in the queue.
+
+
+
+
+ Initializes a new instance of the class. This is an advanced operation; most people should use one of the static Run methods instead.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous context. This is the same identifier as the context's .
+
+
+
+
+ Increments the outstanding asynchronous operation count.
+
+
+
+
+ Decrements the outstanding asynchronous operation count.
+
+
+
+
+ Queues a task for execution by . If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The task to queue. May not be null.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Disposes all resources used by this class. This method should NOT be called while is executing.
+
+
+
+
+ Executes all queued actions. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from tasks that are supposed to propagate errors.
+
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task. This method will unwrap and propagate errors from the task.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task proxy.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task proxy. This method will unwrap and propagate errors from the task proxy.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Gets the current for this thread, or null if this thread is not currently running in an .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . Be careful with async delegates; you may need to call and to prevent early termination of this .
+
+
+
+
+ The implementation used by .
+
+
+
+
+ The async context.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context.
+
+
+
+ Gets the async context.
+
+
+
+
+ Dispatches an asynchronous message to the async context. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Dispatches an asynchronous message to the async context, and waits for it to complete.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Responds to the notification that an operation has started by incrementing the outstanding asynchronous operation count.
+
+
+
+
+ Responds to the notification that an operation has completed by decrementing the outstanding asynchronous operation count.
+
+
+
+
+ Creates a copy of the synchronization context.
+
+ A new object.
+
+
+
+ Returns a hash code for this instance.
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+ Determines whether the specified is equal to this instance. It is considered equal if it refers to the same underlying async context as this instance.
+
+ The to compare with this instance.
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+ A blocking queue.
+
+
+
+
+ The underlying blocking collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a blocking enumerable that removes items from the queue. This enumerable only completes after has been called.
+
+ A blocking enumerable that removes items from the queue.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Attempts to add the item to the queue. If the queue has been marked as complete for adding, this method returns false.
+
+ The item to enqueue.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Marks the queue as complete for adding, allowing the enumerator returned from to eventually complete. This method may be called several times.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ A task scheduler which schedules tasks to an async context.
+
+
+
+
+ The async context for this task scheduler.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context for this task scheduler. May not be null.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Queues a to the scheduler. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The to be queued.
+
+
+
+ Determines whether the provided can be executed synchronously in this call, and if it can, executes it.
+
+ The to be executed.
+ A Boolean denoting whether or not task has previously been queued. If this parameter is True, then the task may have been previously queued (scheduled); if False, then the task is known not to have been queued, and this call is being made in order to execute the task inline without queuing it.
+ A Boolean value indicating whether the task was executed inline.
+ The was already executed.
+
+
+
+ Indicates the maximum concurrency level this is able to support.
+
+
+
+
+ Exposes the base method.
+
+ The task to attempt to execute.
+
+
+
+ A thread that executes actions within an .
+
+
+
+
+ The child thread.
+
+
+
+
+ The asynchronous context executed by the child thread.
+
+
+
+
+ A flag used to ensure we only call once during complex join/dispose operations.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands. If is true, then the child thread is an STA thread (throwing if the platform does not support STA threads).
+
+
+
+
+ Gets the executed by this thread.
+
+
+
+
+ Permits the thread to exit, if we have not already done so.
+
+
+
+
+ Requests the thread to exit and returns a task representing the exit of the thread. The thread will exit when all outstanding asynchronous operations complete.
+
+
+
+
+ Requests the thread to exit.
+
+
+
+
+ Gets the for this thread, which can be used to schedule work to this thread.
+
+
+
+
+ An async-compatible countdown event.
+
+
+
+
+ The TCS used to signal this event.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ Creates an async-compatible countdown event.
+
+ The number of signals this event will need before it becomes set. Must be greater than zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous countdown event.
+
+
+
+
+ Gets the current number of remaining signals before this event becomes set.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Attempts to modify the current count by the specified amount. This method returns false if the new current count value would be invalid, or if the count has already reached zero.
+
+ The amount to change the current count. This may be positive or negative, but not zero.
+
+
+
+ Attempts to add the specified value to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Attempts to add the specified value to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Provides asynchronous wrappers.
+
+ The type of the result of the asychronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method. May not be null.
+ The end method. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap. May not be null.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event.
+ The event args.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event. May not be null.
+ The name of the event. May not be null.
+ The event args.
+
+
+
+ Manages the subscription to an event on a target object, triggering a task (and unsubscribing) when the event is raised.
+
+ The type of event arguments passed to the event.
+
+
+
+ The source for our task, which is returned to the user.
+
+
+
+
+ The subscription to the event.
+
+
+
+
+ The object that publishes the event.
+
+
+
+
+ The event to which we subscribe.
+
+
+
+
+ Subscribes to the specified event.
+
+ The object that publishes the event.
+ The event to which we subscribe.
+
+
+
+ Gets the task that is completed when the event is raised.
+
+
+
+
+ Private method that handles event completion. Do not call this method; it is public to avoid security problems when reflecting.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+ The result of the asynchronous operation.
+
+
+
+ Provides asynchronous wrappers.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method.
+ The end method.
+
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Wraps a with a . When the is signalled, the returned is completed. If the handle is already signalled, this method acts synchronously.
+
+ The to observe.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the handle is already signalled or the timeout is zero, this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is (successfully) completed. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled or the cancellation token is already cancelled, this method acts synchronously.
+
+ The to observe.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled, the timeout is zero, or the cancellation token is already cancelled, then this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+
+
+
+
+ Provides support for asynchronous lazy initialization. This type is fully threadsafe.
+
+ The type of object that is being asynchronously initialized.
+
+
+
+ The underlying lazy task.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Initializes a new instance of the class.
+
+ The asynchronous delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lazy instance.
+
+
+
+
+ Whether the asynchronous factory method has started. This is initially false and becomes true when this instance is awaited or after is called.
+
+
+
+
+ Asynchronous infrastructure support. This method permits instances of to be await'ed.
+
+
+
+
+ Starts the asynchronous initialization, if it has not already started.
+
+
+
+
+ A mutual exclusion lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ Whether the lock is taken by a task.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock.
+
+
+
+
+ A task that is completed with the key object for this lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock using the specified wait queue.
+
+ The wait queue used to manage waiters.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+
+
+
+ Releases the lock.
+
+
+
+
+ The disposable which releases the lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ An async-compatible manual-reset event.
+
+
+
+
+ The object used for synchronization.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Creates an async-compatible manual-reset event.
+
+ Whether the manual-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible manual-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous manual-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Sets the event, atomically completing every task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ Resets the event. If the event is already reset, this method does nothing.
+
+
+
+
+ An async-compatible monitor.
+
+
+
+
+ The lock.
+
+
+
+
+ The condition variable.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Gets a semi-unique identifier for this monitor.
+
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Synchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Sends a signal to a single task waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ An async-compatible producer/consumer queue.
+
+ The type of elements contained in the queue.
+
+
+
+ The underlying queue.
+
+
+
+
+ The maximum number of elements allowed in the queue.
+
+
+
+
+ The mutual-exclusion lock protecting the queue.
+
+
+
+
+ A condition variable that is signalled when the queue is not full.
+
+
+
+
+ A condition variable that is signalled when the queue is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the queue is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements and a maximum element count.
+
+ The initial elements to place in the queue.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements.
+
+ The initial elements to place in the queue.
+
+
+
+ Creates a new async-compatible producer/consumer queue with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue.
+
+
+
+
+ Whether the queue is empty.
+
+
+
+
+ Whether the queue is full.
+
+
+
+
+ Releases resources held by this instance. After disposal, any use of this instance is undefined.
+
+
+
+
+ Asynchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Attempts to enqueue an item.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related enqueue operations. May be null if this is the only enqueue operation.
+
+
+
+ Attempts to enqueue an item. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. This method may block the calling thread. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item.
+
+ A cancellation token that can be used to abort the dequeue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related dequeue operations. May be null if this is the only dequeue operation.
+
+
+
+ Attempts to dequeue an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ The result of a TryDequeue, DequeueFromAny, or TryDequeueFromAny operation.
+
+
+
+
+ The queue from which the item was dequeued, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The dequeued item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ A reader/writer lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as writers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as upgradeable readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to upgrade a reader lock to a writer lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The current upgradeable reader lock key, if any. If this is not null, then there is an upgradeable reader lock held.
+
+
+
+
+ Number of reader locks held (including an upgradeable reader lock, if applicable); -1 if a writer lock is held; 0 if no locks are held.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ A task that is completed with the reader key object for this lock.
+
+
+
+
+ A task that is completed with the writer key object for this lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Applies a continuation to the task that will call if the task is canceled. This method may not be called while holding the sync lock.
+
+ The task to observe for cancellation.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously upgrades a reader lock to a writer lock. This method assumes the sync lock is already held.
+
+
+
+
+ Downgrades a writer lock to a reader lock. This method assumes the sync lock is already held.
+
+
+
+
+ Grants lock(s) to waiting tasks. This method assumes the sync lock is already held.
+
+
+
+
+ Releases the lock as a reader.
+
+
+
+
+ Releases the lock as a writer.
+
+
+
+
+ Releases the lock as an upgradeable reader.
+
+
+
+
+ The disposable which releases the reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which releases the writer lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which manages the upgradeable reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ The task doing the upgrade.
+
+
+
+
+ A task that is completed with the upgrade key object for this key.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Gets a value indicating whether this lock has been upgraded to a write lock.
+
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+
+
+
+ Downgrades the writer lock to a reader lock.
+
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which downgrades an upgradeable reader key.
+
+
+
+
+ The upgradeable reader key to downgrade.
+
+
+
+
+ Creates the upgrade key for an upgradeable reader key.
+
+ The upgradeable reader key to downgrade. May not be null.
+
+
+
+ Downgrade the upgradeable reader key.
+
+
+
+
+ An async-compatible semaphore. Alternatively, you could use SemaphoreSlim on .NET 4.5 / Windows Store.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the semaphore.
+
+
+
+
+ The number of waits that will be immediately granted.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+ The wait queue used to manage waiters.
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous semaphore.
+
+
+
+
+ Gets the number of slots currently available on this semaphore.
+
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ A collection of cancelable instances. Implementations must be threadsafe and must work correctly if the caller is holding a lock.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ Gets whether the queue is empty.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. The returned task must support both synchronous and asynchronous waits.
+
+ The queued task.
+
+
+
+ Removes a single entry in the wait queue. Returns a disposable that completes that entry.
+
+ The result used to complete the wait queue entry. If this isn't needed, use default(T).
+
+
+
+ Removes all entries in the wait queue. Returns a disposable that completes all entries.
+
+ The result used to complete the wait queue entries. If this isn't needed, use default(T).
+
+
+
+ Attempts to remove an entry from the wait queue. Returns a disposable that cancels the entry.
+
+ The task to cancel.
+ A value indicating whether the entry was found and canceled.
+
+
+
+ Removes all entries from the wait queue. Returns a disposable that cancels all entries.
+
+
+
+
+ Provides extension methods for wait queues.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ A synchronization object taken while cancelling the entry.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ The default wait queue implementation, which uses a double-ended queue.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ An awaitable wrapper around a task whose result is disposable. The wrapper is not disposable, so this prevents usage errors like "using (MyAsync())" when the appropriate usage should be "using (await MyAsync())".
+
+ The type of the result of the underlying task.
+
+
+
+ The underlying task.
+
+
+
+
+ Initializes a new awaitable wrapper around the specified task.
+
+ The underlying task to wrap.
+
+
+
+ Returns the underlying task.
+
+
+
+
+ Implicit conversion to the underlying task.
+
+ The awaitable wrapper.
+
+
+
+ Infrastructure. Returns the task awaiter for the underlying task.
+
+
+
+
+ Infrastructure. Returns a configured task awaiter for the underlying task.
+
+ Whether to attempt to marshal the continuation back to the captured context.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Returns a that is canceled when this is canceled. This method will leak resources if the cancellation token is long-lived; use for a similar approach with proper resource management.
+
+ The to monitor.
+ A that is canceled when this is canceled.
+
+
+
+ Returns a which holds the task for this cancellation token.
+
+ The cancellation token to observe.
+
+
+
+ Holds the task for a cancellation token, as well as the token registration. The registration is disposed when this instance is disposed.
+
+
+
+
+ The cancellation token registration, if any. This is null if the registration was not necessary.
+
+
+
+
+ Creates a task for the specified cancellation token, registering with the token if necessary.
+
+ The cancellation token to observe.
+
+
+
+ Gets the task for the source cancellation token.
+
+
+
+
+ Disposes the cancellation token registration, if any. Note that this may cause to never complete.
+
+
+
+
+ Helper methods for cancellation tokens.
+
+
+
+
+ Initializes the static members.
+
+
+
+
+ Gets , a cancellation token that is never canceled.
+
+
+
+
+ Gets a cancellation token that is already canceled.
+
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+ The options to use for the task continuation.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+
+
+
+ Manages the deferrals for a "command" event that may have asynchonous handlers.
+
+
+
+
+ The countdown event, triggered when all deferrals have completed. This is null if there are no deferrals.
+
+
+
+
+ Gets a deferral. The deferral is complete when disposed.
+
+ The deferral.
+
+
+
+ Notifies the manager that all deferrals have been requested, and returns a task that is completed when all deferrals have completed.
+
+ A task that is completed when all deferrals have completed.
+
+
+
+ A deferral.
+
+
+
+
+ The countdown event of the deferral manager.
+
+
+
+
+ Creates a new deferral referencing the countdown event of the deferral manager.
+
+ The countdown event of the deferral manager.
+
+
+
+ Completes the deferral.
+
+
+
+
+ Provides helper (non-extension) methods dealing with exceptions.
+
+
+
+
+ Attempts to prepare the exception for re-throwing by preserving the stack trace. The returned exception should be immediately thrown.
+
+ The exception. May not be null.
+ The that was passed into this method.
+
+
+
+ Allocates Ids for instances on demand. 0 is an invalid/unassigned Id. Ids may be non-unique in very long-running systems. This is similar to the Id system used by and .
+
+ The type for which ids are generated.
+
+
+
+ The last id generated for this type. This is 0 if no ids have been generated.
+
+
+
+
+ Returns the id, allocating it if necessary.
+
+ A reference to the field containing the id.
+
+
+
+ A that may or may not also reference its own . Instances of this type should always be disposed.
+
+
+
+
+ The , if any. If this is not null, then is _cts.Token.
+
+
+
+
+ The . If is not null, then this is _cts.Token.
+
+
+
+
+ Creates a normalized cancellation token that can never be canceled.
+
+
+
+
+ Creates a normalized cancellation token from a . is set to the property of .
+
+ The source for this token.
+
+
+
+ Creates a normalized cancellation token from a . is set to .
+
+ The source for this token.
+
+
+
+ Releases any resources used by this normalized cancellation token.
+
+
+
+
+ Gets the for this normalized cancellation token.
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets a task that completes successfully when completes (successfully, faulted, or canceled). This property never changes and is never null.
+
+
+
+
+ Gets the current task status. This property raises a notification when the task completes.
+
+
+
+
+ Gets whether the task has completed. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task is busy (not completed). This property raises a notification when the value changes to false.
+
+
+
+
+ Gets whether the task has completed successfully. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task has been canceled. This property raises a notification only if the task is canceled (i.e., if the value changes to true).
+
+
+
+
+ Gets whether the task has faulted. This property raises a notification only if the task faults (i.e., if the value changes to true).
+
+
+
+
+ Gets the wrapped faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the error message for the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets the result of the task. Returns the default value of if the task has not completed successfully. This property raises a notification when the task completes successfully.
+
+
+
+
+ Factory for task completion notifiers.
+
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The type of the task result.
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ The source (controller) of a "pause token", which can be used to cooperatively pause and unpause operations.
+
+
+
+
+ The MRE that manages the "pause" logic. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether or not this source (and its tokens) are in the paused state.
+
+
+
+
+ Gets a pause token controlled by this source.
+
+
+
+
+ A type that allows an operation to be cooperatively paused.
+
+
+
+
+ The MRE that manages the "pause" logic, or null if this token can never be paused. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether this token can ever possibly be paused.
+
+
+
+
+ Whether or not this token is in the paused state.
+
+
+
+
+ Asynchronously waits until the pause token is not paused.
+
+
+
+
+ Asynchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ Synchronously waits until the pause token is not paused.
+
+
+
+
+ Synchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ A progress implementation that stores progress updates in a property. If this instance is created on a UI thread, its property is suitable for data binding.
+
+ The type of progress value.
+
+
+
+ The context of the thread that created this instance.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The initial progress value.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Occurs when the property value changes.
+
+
+
+
+ Provides helper types for .
+
+
+
+
+ Retrieves the current synchronization context, or the default synchronization context if there is no current synchronization context.
+
+
+
+
+ Utility class for temporarily switching implementations.
+
+
+
+
+ The previous .
+
+
+
+
+ Whether this object has already been disposed.
+
+
+
+
+ Initializes a new instance of the class, installing the new .
+
+ The new .
+
+
+
+ Restores the old .
+
+
+
+
+ Provides synchronous extension methods for tasks.
+
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ The result of the task.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The result of the task.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed.
+
+
+
+ Represents the producer side of a unbound to a delegate, providing access to the consumer side through the property.
+
+
+
+
+ The underlying TCS.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified state.
+
+ The state to use as the underlying 's .
+
+
+
+ Initializes a new instance of the class with the specified options.
+
+ The options to use when creating the underlying .
+
+
+
+ Initializes a new instance of the class with the specified state and options.
+
+ The state to use as the underlying 's .
+ The options to use when creating the underlying .
+
+
+
+ Gets the created by this .
+
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ The underlying has already been completed.
+
+
+
+ Transitions the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the target asynchronous operation.
+ The type of the result of the source asynchronous operation.
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ The delegate used to retrieve the result. This is only invoked if indicates successful completion. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a with the specified value, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Attempts to complete a , forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Provides completed task constants.
+
+
+
+
+ A task that has been completed with the value true.
+
+
+
+
+ A task that has been completed with the value false.
+
+
+
+
+ A task that has been completed with the value 0.
+
+
+
+
+ A task that has been completed with the value -1.
+
+
+
+
+ A that has been completed.
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides completed task constants.
+
+ The type of the task result.
+
+
+
+ A task that has been completed with the default value of .
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides extension methods for tasks.
+
+
+
+
+ Creates a new array of tasks which complete in order.
+
+ The type of the results of the tasks.
+ The tasks to order by completion.
+
+
+
+ Provides extension methods for task factories.
+
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ A double-ended queue (deque), which provides O(1) indexed access, O(1) removals from the front and back, amortized O(1) insertions to the front and back, and O(N) insertions and removals anywhere else (with the operations getting slower as the index approaches the middle).
+
+ The type of elements contained in the deque.
+
+
+
+ The default capacity.
+
+
+
+
+ The circular buffer that holds the view.
+
+
+
+
+ The offset into where the view begins.
+
+
+
+
+ Initializes a new instance of the class with the specified capacity.
+
+ The initial capacity. Must be greater than 0.
+
+
+
+ Initializes a new instance of the class with the elements from the specified collection.
+
+ The collection.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a value indicating whether this list is read-only. This implementation always returns false.
+
+ true if this list is read-only; otherwise, false.
+
+
+
+ Gets or sets the item at the specified index.
+
+ The index of the item to get or set.
+ is not a valid index in this list.
+ This property is set and the list is read-only.
+
+
+
+ Inserts an item to this list at the specified index.
+
+ The zero-based index at which should be inserted.
+ The object to insert into this list.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Determines the index of a specific item in this list.
+
+ The object to locate in this list.
+ The index of if found in this list; otherwise, -1.
+
+
+
+ Adds an item to the end of this list.
+
+ The object to add to this list.
+
+ This list is read-only.
+
+
+
+
+ Determines whether this list contains a specific value.
+
+ The object to locate in this list.
+
+ true if is found in this list; otherwise, false.
+
+
+
+
+ Copies the elements of this list to an , starting at a particular index.
+
+ The one-dimensional that is the destination of the elements copied from this slice. The must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+ is null.
+
+
+ is less than 0.
+
+
+ is equal to or greater than the length of .
+ -or-
+ The number of elements in the source is greater than the available space from to the end of the destination .
+
+
+
+
+ Removes the first occurrence of a specific object from this list.
+
+ The object to remove from this list.
+
+ true if was successfully removed from this list; otherwise, false. This method also returns false if is not found in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Checks the argument to see if it refers to a valid insertion point in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Checks the argument to see if it refers to an existing element in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an existing element for the source.
+
+
+
+ Checks the and arguments for validity when applied to a source of a given length. Allows 0-element ranges, including a 0-element range at the end of the source.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into source at which the range begins.
+ The number of elements in the range.
+ Either or is less than 0.
+ The range [offset, offset + count) is not within the range [0, sourceLength).
+
+
+
+ Gets a value indicating whether this instance is empty.
+
+
+
+
+ Gets a value indicating whether this instance is at full capacity.
+
+
+
+
+ Gets a value indicating whether the buffer is "split" (meaning the beginning of the view is at a later index in than the end).
+
+
+
+
+ Gets or sets the capacity for this deque. This value must always be greater than zero, and this property cannot be set to a value less than .
+
+ Capacity cannot be set to a value less than .
+
+
+
+ Gets the number of elements contained in this deque.
+
+ The number of elements contained in this deque.
+
+
+
+ Applies the offset to , resulting in a buffer index.
+
+ The deque index.
+ The buffer index.
+
+
+
+ Gets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element at the specified index.
+
+
+
+ Sets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Inserts an element at the specified view index.
+
+ The zero-based view index at which the element should be inserted. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Removes an element at the specified view index.
+
+ The zero-based view index of the element to remove. This index is guaranteed to be valid.
+
+
+
+ Increments by using modulo- arithmetic.
+
+ The value by which to increase . May not be negative.
+ The value of after it was incremented.
+
+
+
+ Decrements by using modulo- arithmetic.
+
+ The value by which to reduce . May not be negative or greater than .
+ The value of before it was decremented.
+
+
+
+ Inserts a single element to the back of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Inserts a single element to the front of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Removes and returns the last element in the view. must be false when this method is called.
+
+ The former last element.
+
+
+
+ Removes and returns the first element in the view. must be false when this method is called.
+
+ The former first element.
+
+
+
+ Inserts a range of elements into the view.
+
+ The index into the view at which the elements are to be inserted.
+ The elements to insert.
+ The number of elements in . Must be greater than zero, and the sum of and must be less than or equal to .
+
+
+
+ Removes a range of elements from the view.
+
+ The index into the view at which the range begins.
+ The number of elements in the range. This must be greater than 0 and less than or equal to .
+
+
+
+ Doubles the capacity if necessary to make room for one more element. When this method returns, is false.
+
+
+
+
+ Inserts a single element at the back of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a single element at the front of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a collection of elements into this deque.
+
+ The index at which the collection is inserted.
+ The collection of elements to insert.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Removes a range of elements from this deque.
+
+ The index into the deque at which the range begins.
+ The number of elements to remove.
+ Either or is less than 0.
+ The range [, + ) is not within the range [0, ).
+
+
+
+ Removes and returns the last element of this deque.
+
+ The former last element.
+ The deque is empty.
+
+
+
+ Removes and returns the first element of this deque.
+
+ The former first element.
+ The deque is empty.
+
+
+
+ Removes all items from this deque.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/netcore451/Nito.AsyncEx.Concurrent.dll b/packages/Nito.AsyncEx.4.0.1/lib/netcore451/Nito.AsyncEx.Concurrent.dll
new file mode 100644
index 000000000..8f91a729a
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/netcore451/Nito.AsyncEx.Concurrent.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/netcore451/Nito.AsyncEx.Concurrent.xml b/packages/Nito.AsyncEx.4.0.1/lib/netcore451/Nito.AsyncEx.Concurrent.xml
new file mode 100644
index 000000000..497b59a89
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/netcore451/Nito.AsyncEx.Concurrent.xml
@@ -0,0 +1,401 @@
+
+
+
+ Nito.AsyncEx.Concurrent
+
+
+
+
+ An async-compatible producer/consumer collection.
+
+ The type of elements contained in the collection.
+
+
+
+ The underlying collection.
+
+
+
+
+ The maximum number of elements allowed in the collection.
+
+
+
+
+ The mutual-exclusion lock protecting the collection.
+
+
+
+
+ A condition variable that is signalled when the collection is not full.
+
+
+
+
+ A condition variable that is signalled when the collection is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the collection is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer collection wrapping the specified collection and with a maximum element count.
+
+ The collection to wrap.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer collection wrapping the specified collection.
+
+ The collection to wrap.
+
+
+
+ Creates a new async-compatible producer/consumer collection with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer collection.
+
+
+
+
+ Whether the collection is empty.
+
+
+
+
+ Whether the collection is full.
+
+
+
+
+ Asynchronously marks the producer/consumer collection as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer collection as complete for adding.
+
+
+
+
+ Attempts to add an item.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related add operations. May be null if this is the only add operation.
+
+
+
+ Attempts to add an item. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer collection has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer collection has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer collection.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to take an item.
+
+ A cancellation token that can be used to abort the take operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related take operations. May be null if this is the only take operation.
+
+
+
+ Attempts to take an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection.
+
+
+
+
+ Attempts to take an item from the producer/consumer collection. This method may block the calling thread.
+
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed.
+
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed. This method may block the calling thread.
+
+
+
+
+ The result of a TryTake, TakeFromAny, or TryTakeFromAny operation.
+
+
+
+
+ The collection from which the item was taken, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The producer/consumer collections.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The producer/consumer collections.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The array of producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The array of producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The array of producer/consumer collections.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The array of producer/consumer collections.
+
+
+
+ A progress implementation that sends progress reports to a producer/consumer collection.
+
+ The type of progress value.
+
+
+
+ The producer/consumer collection that receives progress reports.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The producer/consumer collection that receives progress reports.
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/netcore451/Nito.AsyncEx.Enlightenment.dll b/packages/Nito.AsyncEx.4.0.1/lib/netcore451/Nito.AsyncEx.Enlightenment.dll
new file mode 100644
index 000000000..e8718dd14
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/netcore451/Nito.AsyncEx.Enlightenment.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/netcore451/Nito.AsyncEx.Enlightenment.xml b/packages/Nito.AsyncEx.4.0.1/lib/netcore451/Nito.AsyncEx.Enlightenment.xml
new file mode 100644
index 000000000..db9ce6e4a
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/netcore451/Nito.AsyncEx.Enlightenment.xml
@@ -0,0 +1,18 @@
+
+
+
+ Nito.AsyncEx.Enlightenment
+
+
+
+
+ Verifies platform enlightenment.
+
+
+
+
+ Returns a value indicating whether the correct platform enlightenment provider has been loaded.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/netcore451/Nito.AsyncEx.dll b/packages/Nito.AsyncEx.4.0.1/lib/netcore451/Nito.AsyncEx.dll
new file mode 100644
index 000000000..e414e7a28
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/netcore451/Nito.AsyncEx.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/netcore451/Nito.AsyncEx.xml b/packages/Nito.AsyncEx.4.0.1/lib/netcore451/Nito.AsyncEx.xml
new file mode 100644
index 000000000..d497cca9c
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/netcore451/Nito.AsyncEx.xml
@@ -0,0 +1,3930 @@
+
+
+
+ Nito.AsyncEx
+
+
+
+
+ An async-compatible auto-reset event.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible auto-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous auto-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event. This method may block the calling thread.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately.
+
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately. This method may block the calling thread.
+
+
+
+
+ Sets the event, atomically completing a task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ An async-compatible barrier.
+
+
+
+
+ Mutex used to control access to other fields.
+
+
+
+
+ The TCS used to signal the current phase.
+
+
+
+
+ The current phase.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ The total number of participants.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The asynchronous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ The synchonous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Gets a semi-unique identifier for this asynchronous barrier.
+
+
+
+
+ Gets the current phase of the barrier.
+
+
+
+
+ Gets the number of participants in this barrier.
+
+
+
+
+ Gets the number of participants for this phase that have not yet signalled.
+
+
+
+
+ Starts executing the post-phase action and returns a representing the action.
+
+
+
+
+ Signals completions to this barrier. Returns the task for the current phase, which may already be completed. Returns null if the signal count is greater than the remaining participant count.
+
+ The number of completions to signal.
+ Whether the participants should be removed permanently.
+
+
+
+ Signals the specified number of completions to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+ The cancellation token used to cancel the wait. If this signal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Adds the specified number of participants to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+ The number of participants to add.
+
+
+
+ Adds a participant to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and asynchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and asynchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ An async-compatible condition variable. This type uses Mesa-style semantics (the notifying tasks do not yield).
+
+
+
+
+ The lock associated with this condition variable.
+
+
+
+
+ The queue of waiting tasks.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+
+
+
+ Gets a semi-unique identifier for this asynchronous condition variable.
+
+
+
+
+ Sends a signal to a single task waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Provides a context for asynchronous operations. This class is threadsafe.
+
+
+ may only be called once. After returns, the async context should be disposed.
+
+
+
+
+ The queue holding the actions to run.
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The number of outstanding operations, including actions in the queue.
+
+
+
+
+ Initializes a new instance of the class. This is an advanced operation; most people should use one of the static Run methods instead.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous context. This is the same identifier as the context's .
+
+
+
+
+ Increments the outstanding asynchronous operation count.
+
+
+
+
+ Decrements the outstanding asynchronous operation count.
+
+
+
+
+ Queues a task for execution by . If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The task to queue. May not be null.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Disposes all resources used by this class. This method should NOT be called while is executing.
+
+
+
+
+ Executes all queued actions. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from tasks that are supposed to propagate errors.
+
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task. This method will unwrap and propagate errors from the task.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task proxy.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task proxy. This method will unwrap and propagate errors from the task proxy.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Gets the current for this thread, or null if this thread is not currently running in an .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . Be careful with async delegates; you may need to call and to prevent early termination of this .
+
+
+
+
+ The implementation used by .
+
+
+
+
+ The async context.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context.
+
+
+
+ Gets the async context.
+
+
+
+
+ Dispatches an asynchronous message to the async context. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Dispatches an asynchronous message to the async context, and waits for it to complete.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Responds to the notification that an operation has started by incrementing the outstanding asynchronous operation count.
+
+
+
+
+ Responds to the notification that an operation has completed by decrementing the outstanding asynchronous operation count.
+
+
+
+
+ Creates a copy of the synchronization context.
+
+ A new object.
+
+
+
+ Returns a hash code for this instance.
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+ Determines whether the specified is equal to this instance. It is considered equal if it refers to the same underlying async context as this instance.
+
+ The to compare with this instance.
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+ A blocking queue.
+
+
+
+
+ The underlying blocking collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a blocking enumerable that removes items from the queue. This enumerable only completes after has been called.
+
+ A blocking enumerable that removes items from the queue.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Attempts to add the item to the queue. If the queue has been marked as complete for adding, this method returns false.
+
+ The item to enqueue.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Marks the queue as complete for adding, allowing the enumerator returned from to eventually complete. This method may be called several times.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ A task scheduler which schedules tasks to an async context.
+
+
+
+
+ The async context for this task scheduler.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context for this task scheduler. May not be null.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Queues a to the scheduler. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The to be queued.
+
+
+
+ Determines whether the provided can be executed synchronously in this call, and if it can, executes it.
+
+ The to be executed.
+ A Boolean denoting whether or not task has previously been queued. If this parameter is True, then the task may have been previously queued (scheduled); if False, then the task is known not to have been queued, and this call is being made in order to execute the task inline without queuing it.
+ A Boolean value indicating whether the task was executed inline.
+ The was already executed.
+
+
+
+ Indicates the maximum concurrency level this is able to support.
+
+
+
+
+ Exposes the base method.
+
+ The task to attempt to execute.
+
+
+
+ A thread that executes actions within an .
+
+
+
+
+ The child thread.
+
+
+
+
+ The asynchronous context executed by the child thread.
+
+
+
+
+ A flag used to ensure we only call once during complex join/dispose operations.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands. If is true, then the child thread is an STA thread (throwing if the platform does not support STA threads).
+
+
+
+
+ Gets the executed by this thread.
+
+
+
+
+ Permits the thread to exit, if we have not already done so.
+
+
+
+
+ Requests the thread to exit and returns a task representing the exit of the thread. The thread will exit when all outstanding asynchronous operations complete.
+
+
+
+
+ Requests the thread to exit.
+
+
+
+
+ Gets the for this thread, which can be used to schedule work to this thread.
+
+
+
+
+ An async-compatible countdown event.
+
+
+
+
+ The TCS used to signal this event.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ Creates an async-compatible countdown event.
+
+ The number of signals this event will need before it becomes set. Must be greater than zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous countdown event.
+
+
+
+
+ Gets the current number of remaining signals before this event becomes set.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Attempts to modify the current count by the specified amount. This method returns false if the new current count value would be invalid, or if the count has already reached zero.
+
+ The amount to change the current count. This may be positive or negative, but not zero.
+
+
+
+ Attempts to add the specified value to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Attempts to add the specified value to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Provides asynchronous wrappers.
+
+ The type of the result of the asychronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method. May not be null.
+ The end method. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap. May not be null.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event.
+ The event args.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event. May not be null.
+ The name of the event. May not be null.
+ The event args.
+
+
+
+ Manages the subscription to an event on a target object, triggering a task (and unsubscribing) when the event is raised.
+
+ The type of event arguments passed to the event.
+
+
+
+ The source for our task, which is returned to the user.
+
+
+
+
+ The subscription to the event.
+
+
+
+
+ The object that publishes the event.
+
+
+
+
+ The event to which we subscribe.
+
+
+
+
+ Subscribes to the specified event.
+
+ The object that publishes the event.
+ The event to which we subscribe.
+
+
+
+ Gets the task that is completed when the event is raised.
+
+
+
+
+ Private method that handles event completion. Do not call this method; it is public to avoid security problems when reflecting.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+ The result of the asynchronous operation.
+
+
+
+ Provides asynchronous wrappers.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method.
+ The end method.
+
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Wraps a with a . When the is signalled, the returned is completed. If the handle is already signalled, this method acts synchronously.
+
+ The to observe.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the handle is already signalled or the timeout is zero, this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is (successfully) completed. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled or the cancellation token is already cancelled, this method acts synchronously.
+
+ The to observe.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled, the timeout is zero, or the cancellation token is already cancelled, then this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+
+
+
+
+ Provides support for asynchronous lazy initialization. This type is fully threadsafe.
+
+ The type of object that is being asynchronously initialized.
+
+
+
+ The underlying lazy task.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Initializes a new instance of the class.
+
+ The asynchronous delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lazy instance.
+
+
+
+
+ Whether the asynchronous factory method has started. This is initially false and becomes true when this instance is awaited or after is called.
+
+
+
+
+ Asynchronous infrastructure support. This method permits instances of to be await'ed.
+
+
+
+
+ Starts the asynchronous initialization, if it has not already started.
+
+
+
+
+ A mutual exclusion lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ Whether the lock is taken by a task.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock.
+
+
+
+
+ A task that is completed with the key object for this lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock using the specified wait queue.
+
+ The wait queue used to manage waiters.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+
+
+
+ Releases the lock.
+
+
+
+
+ The disposable which releases the lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ An async-compatible manual-reset event.
+
+
+
+
+ The object used for synchronization.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Creates an async-compatible manual-reset event.
+
+ Whether the manual-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible manual-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous manual-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Sets the event, atomically completing every task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ Resets the event. If the event is already reset, this method does nothing.
+
+
+
+
+ An async-compatible monitor.
+
+
+
+
+ The lock.
+
+
+
+
+ The condition variable.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Gets a semi-unique identifier for this monitor.
+
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Synchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Sends a signal to a single task waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ An async-compatible producer/consumer queue.
+
+ The type of elements contained in the queue.
+
+
+
+ The underlying queue.
+
+
+
+
+ The maximum number of elements allowed in the queue.
+
+
+
+
+ The mutual-exclusion lock protecting the queue.
+
+
+
+
+ A condition variable that is signalled when the queue is not full.
+
+
+
+
+ A condition variable that is signalled when the queue is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the queue is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements and a maximum element count.
+
+ The initial elements to place in the queue.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements.
+
+ The initial elements to place in the queue.
+
+
+
+ Creates a new async-compatible producer/consumer queue with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue.
+
+
+
+
+ Whether the queue is empty.
+
+
+
+
+ Whether the queue is full.
+
+
+
+
+ Releases resources held by this instance. After disposal, any use of this instance is undefined.
+
+
+
+
+ Asynchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Attempts to enqueue an item.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related enqueue operations. May be null if this is the only enqueue operation.
+
+
+
+ Attempts to enqueue an item. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. This method may block the calling thread. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item.
+
+ A cancellation token that can be used to abort the dequeue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related dequeue operations. May be null if this is the only dequeue operation.
+
+
+
+ Attempts to dequeue an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ The result of a TryDequeue, DequeueFromAny, or TryDequeueFromAny operation.
+
+
+
+
+ The queue from which the item was dequeued, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The dequeued item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ A reader/writer lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as writers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as upgradeable readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to upgrade a reader lock to a writer lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The current upgradeable reader lock key, if any. If this is not null, then there is an upgradeable reader lock held.
+
+
+
+
+ Number of reader locks held (including an upgradeable reader lock, if applicable); -1 if a writer lock is held; 0 if no locks are held.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ A task that is completed with the reader key object for this lock.
+
+
+
+
+ A task that is completed with the writer key object for this lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Applies a continuation to the task that will call if the task is canceled. This method may not be called while holding the sync lock.
+
+ The task to observe for cancellation.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously upgrades a reader lock to a writer lock. This method assumes the sync lock is already held.
+
+
+
+
+ Downgrades a writer lock to a reader lock. This method assumes the sync lock is already held.
+
+
+
+
+ Grants lock(s) to waiting tasks. This method assumes the sync lock is already held.
+
+
+
+
+ Releases the lock as a reader.
+
+
+
+
+ Releases the lock as a writer.
+
+
+
+
+ Releases the lock as an upgradeable reader.
+
+
+
+
+ The disposable which releases the reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which releases the writer lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which manages the upgradeable reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ The task doing the upgrade.
+
+
+
+
+ A task that is completed with the upgrade key object for this key.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Gets a value indicating whether this lock has been upgraded to a write lock.
+
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+
+
+
+ Downgrades the writer lock to a reader lock.
+
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which downgrades an upgradeable reader key.
+
+
+
+
+ The upgradeable reader key to downgrade.
+
+
+
+
+ Creates the upgrade key for an upgradeable reader key.
+
+ The upgradeable reader key to downgrade. May not be null.
+
+
+
+ Downgrade the upgradeable reader key.
+
+
+
+
+ An async-compatible semaphore. Alternatively, you could use SemaphoreSlim on .NET 4.5 / Windows Store.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the semaphore.
+
+
+
+
+ The number of waits that will be immediately granted.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+ The wait queue used to manage waiters.
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous semaphore.
+
+
+
+
+ Gets the number of slots currently available on this semaphore.
+
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ A collection of cancelable instances. Implementations must be threadsafe and must work correctly if the caller is holding a lock.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ Gets whether the queue is empty.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. The returned task must support both synchronous and asynchronous waits.
+
+ The queued task.
+
+
+
+ Removes a single entry in the wait queue. Returns a disposable that completes that entry.
+
+ The result used to complete the wait queue entry. If this isn't needed, use default(T).
+
+
+
+ Removes all entries in the wait queue. Returns a disposable that completes all entries.
+
+ The result used to complete the wait queue entries. If this isn't needed, use default(T).
+
+
+
+ Attempts to remove an entry from the wait queue. Returns a disposable that cancels the entry.
+
+ The task to cancel.
+ A value indicating whether the entry was found and canceled.
+
+
+
+ Removes all entries from the wait queue. Returns a disposable that cancels all entries.
+
+
+
+
+ Provides extension methods for wait queues.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ A synchronization object taken while cancelling the entry.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ The default wait queue implementation, which uses a double-ended queue.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ An awaitable wrapper around a task whose result is disposable. The wrapper is not disposable, so this prevents usage errors like "using (MyAsync())" when the appropriate usage should be "using (await MyAsync())".
+
+ The type of the result of the underlying task.
+
+
+
+ The underlying task.
+
+
+
+
+ Initializes a new awaitable wrapper around the specified task.
+
+ The underlying task to wrap.
+
+
+
+ Returns the underlying task.
+
+
+
+
+ Implicit conversion to the underlying task.
+
+ The awaitable wrapper.
+
+
+
+ Infrastructure. Returns the task awaiter for the underlying task.
+
+
+
+
+ Infrastructure. Returns a configured task awaiter for the underlying task.
+
+ Whether to attempt to marshal the continuation back to the captured context.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Returns a that is canceled when this is canceled. This method will leak resources if the cancellation token is long-lived; use for a similar approach with proper resource management.
+
+ The to monitor.
+ A that is canceled when this is canceled.
+
+
+
+ Returns a which holds the task for this cancellation token.
+
+ The cancellation token to observe.
+
+
+
+ Holds the task for a cancellation token, as well as the token registration. The registration is disposed when this instance is disposed.
+
+
+
+
+ The cancellation token registration, if any. This is null if the registration was not necessary.
+
+
+
+
+ Creates a task for the specified cancellation token, registering with the token if necessary.
+
+ The cancellation token to observe.
+
+
+
+ Gets the task for the source cancellation token.
+
+
+
+
+ Disposes the cancellation token registration, if any. Note that this may cause to never complete.
+
+
+
+
+ Helper methods for cancellation tokens.
+
+
+
+
+ Initializes the static members.
+
+
+
+
+ Gets , a cancellation token that is never canceled.
+
+
+
+
+ Gets a cancellation token that is already canceled.
+
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+ The options to use for the task continuation.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+
+
+
+ Manages the deferrals for a "command" event that may have asynchonous handlers.
+
+
+
+
+ The countdown event, triggered when all deferrals have completed. This is null if there are no deferrals.
+
+
+
+
+ Gets a deferral. The deferral is complete when disposed.
+
+ The deferral.
+
+
+
+ Notifies the manager that all deferrals have been requested, and returns a task that is completed when all deferrals have completed.
+
+ A task that is completed when all deferrals have completed.
+
+
+
+ A deferral.
+
+
+
+
+ The countdown event of the deferral manager.
+
+
+
+
+ Creates a new deferral referencing the countdown event of the deferral manager.
+
+ The countdown event of the deferral manager.
+
+
+
+ Completes the deferral.
+
+
+
+
+ Provides helper (non-extension) methods dealing with exceptions.
+
+
+
+
+ Attempts to prepare the exception for re-throwing by preserving the stack trace. The returned exception should be immediately thrown.
+
+ The exception. May not be null.
+ The that was passed into this method.
+
+
+
+ Allocates Ids for instances on demand. 0 is an invalid/unassigned Id. Ids may be non-unique in very long-running systems. This is similar to the Id system used by and .
+
+ The type for which ids are generated.
+
+
+
+ The last id generated for this type. This is 0 if no ids have been generated.
+
+
+
+
+ Returns the id, allocating it if necessary.
+
+ A reference to the field containing the id.
+
+
+
+ A that may or may not also reference its own . Instances of this type should always be disposed.
+
+
+
+
+ The , if any. If this is not null, then is _cts.Token.
+
+
+
+
+ The . If is not null, then this is _cts.Token.
+
+
+
+
+ Creates a normalized cancellation token that can never be canceled.
+
+
+
+
+ Creates a normalized cancellation token from a . is set to the property of .
+
+ The source for this token.
+
+
+
+ Creates a normalized cancellation token from a . is set to .
+
+ The source for this token.
+
+
+
+ Releases any resources used by this normalized cancellation token.
+
+
+
+
+ Gets the for this normalized cancellation token.
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets a task that completes successfully when completes (successfully, faulted, or canceled). This property never changes and is never null.
+
+
+
+
+ Gets the current task status. This property raises a notification when the task completes.
+
+
+
+
+ Gets whether the task has completed. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task is busy (not completed). This property raises a notification when the value changes to false.
+
+
+
+
+ Gets whether the task has completed successfully. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task has been canceled. This property raises a notification only if the task is canceled (i.e., if the value changes to true).
+
+
+
+
+ Gets whether the task has faulted. This property raises a notification only if the task faults (i.e., if the value changes to true).
+
+
+
+
+ Gets the wrapped faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the error message for the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets the result of the task. Returns the default value of if the task has not completed successfully. This property raises a notification when the task completes successfully.
+
+
+
+
+ Factory for task completion notifiers.
+
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The type of the task result.
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ The source (controller) of a "pause token", which can be used to cooperatively pause and unpause operations.
+
+
+
+
+ The MRE that manages the "pause" logic. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether or not this source (and its tokens) are in the paused state.
+
+
+
+
+ Gets a pause token controlled by this source.
+
+
+
+
+ A type that allows an operation to be cooperatively paused.
+
+
+
+
+ The MRE that manages the "pause" logic, or null if this token can never be paused. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether this token can ever possibly be paused.
+
+
+
+
+ Whether or not this token is in the paused state.
+
+
+
+
+ Asynchronously waits until the pause token is not paused.
+
+
+
+
+ Asynchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ Synchronously waits until the pause token is not paused.
+
+
+
+
+ Synchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ A progress implementation that stores progress updates in a property. If this instance is created on a UI thread, its property is suitable for data binding.
+
+ The type of progress value.
+
+
+
+ The context of the thread that created this instance.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The initial progress value.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Occurs when the property value changes.
+
+
+
+
+ Provides helper types for .
+
+
+
+
+ Retrieves the current synchronization context, or the default synchronization context if there is no current synchronization context.
+
+
+
+
+ Utility class for temporarily switching implementations.
+
+
+
+
+ The previous .
+
+
+
+
+ Whether this object has already been disposed.
+
+
+
+
+ Initializes a new instance of the class, installing the new .
+
+ The new .
+
+
+
+ Restores the old .
+
+
+
+
+ Provides synchronous extension methods for tasks.
+
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ The result of the task.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The result of the task.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed.
+
+
+
+ Represents the producer side of a unbound to a delegate, providing access to the consumer side through the property.
+
+
+
+
+ The underlying TCS.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified state.
+
+ The state to use as the underlying 's .
+
+
+
+ Initializes a new instance of the class with the specified options.
+
+ The options to use when creating the underlying .
+
+
+
+ Initializes a new instance of the class with the specified state and options.
+
+ The state to use as the underlying 's .
+ The options to use when creating the underlying .
+
+
+
+ Gets the created by this .
+
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ The underlying has already been completed.
+
+
+
+ Transitions the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the target asynchronous operation.
+ The type of the result of the source asynchronous operation.
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ The delegate used to retrieve the result. This is only invoked if indicates successful completion. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a with the specified value, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Attempts to complete a , forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Provides completed task constants.
+
+
+
+
+ A task that has been completed with the value true.
+
+
+
+
+ A task that has been completed with the value false.
+
+
+
+
+ A task that has been completed with the value 0.
+
+
+
+
+ A task that has been completed with the value -1.
+
+
+
+
+ A that has been completed.
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides completed task constants.
+
+ The type of the task result.
+
+
+
+ A task that has been completed with the default value of .
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides extension methods for tasks.
+
+
+
+
+ Creates a new array of tasks which complete in order.
+
+ The type of the results of the tasks.
+ The tasks to order by completion.
+
+
+
+ Provides extension methods for task factories.
+
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ A double-ended queue (deque), which provides O(1) indexed access, O(1) removals from the front and back, amortized O(1) insertions to the front and back, and O(N) insertions and removals anywhere else (with the operations getting slower as the index approaches the middle).
+
+ The type of elements contained in the deque.
+
+
+
+ The default capacity.
+
+
+
+
+ The circular buffer that holds the view.
+
+
+
+
+ The offset into where the view begins.
+
+
+
+
+ Initializes a new instance of the class with the specified capacity.
+
+ The initial capacity. Must be greater than 0.
+
+
+
+ Initializes a new instance of the class with the elements from the specified collection.
+
+ The collection.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a value indicating whether this list is read-only. This implementation always returns false.
+
+ true if this list is read-only; otherwise, false.
+
+
+
+ Gets or sets the item at the specified index.
+
+ The index of the item to get or set.
+ is not a valid index in this list.
+ This property is set and the list is read-only.
+
+
+
+ Inserts an item to this list at the specified index.
+
+ The zero-based index at which should be inserted.
+ The object to insert into this list.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Determines the index of a specific item in this list.
+
+ The object to locate in this list.
+ The index of if found in this list; otherwise, -1.
+
+
+
+ Adds an item to the end of this list.
+
+ The object to add to this list.
+
+ This list is read-only.
+
+
+
+
+ Determines whether this list contains a specific value.
+
+ The object to locate in this list.
+
+ true if is found in this list; otherwise, false.
+
+
+
+
+ Copies the elements of this list to an , starting at a particular index.
+
+ The one-dimensional that is the destination of the elements copied from this slice. The must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+ is null.
+
+
+ is less than 0.
+
+
+ is equal to or greater than the length of .
+ -or-
+ The number of elements in the source is greater than the available space from to the end of the destination .
+
+
+
+
+ Removes the first occurrence of a specific object from this list.
+
+ The object to remove from this list.
+
+ true if was successfully removed from this list; otherwise, false. This method also returns false if is not found in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Checks the argument to see if it refers to a valid insertion point in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Checks the argument to see if it refers to an existing element in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an existing element for the source.
+
+
+
+ Checks the and arguments for validity when applied to a source of a given length. Allows 0-element ranges, including a 0-element range at the end of the source.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into source at which the range begins.
+ The number of elements in the range.
+ Either or is less than 0.
+ The range [offset, offset + count) is not within the range [0, sourceLength).
+
+
+
+ Gets a value indicating whether this instance is empty.
+
+
+
+
+ Gets a value indicating whether this instance is at full capacity.
+
+
+
+
+ Gets a value indicating whether the buffer is "split" (meaning the beginning of the view is at a later index in than the end).
+
+
+
+
+ Gets or sets the capacity for this deque. This value must always be greater than zero, and this property cannot be set to a value less than .
+
+ Capacity cannot be set to a value less than .
+
+
+
+ Gets the number of elements contained in this deque.
+
+ The number of elements contained in this deque.
+
+
+
+ Applies the offset to , resulting in a buffer index.
+
+ The deque index.
+ The buffer index.
+
+
+
+ Gets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element at the specified index.
+
+
+
+ Sets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Inserts an element at the specified view index.
+
+ The zero-based view index at which the element should be inserted. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Removes an element at the specified view index.
+
+ The zero-based view index of the element to remove. This index is guaranteed to be valid.
+
+
+
+ Increments by using modulo- arithmetic.
+
+ The value by which to increase . May not be negative.
+ The value of after it was incremented.
+
+
+
+ Decrements by using modulo- arithmetic.
+
+ The value by which to reduce . May not be negative or greater than .
+ The value of before it was decremented.
+
+
+
+ Inserts a single element to the back of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Inserts a single element to the front of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Removes and returns the last element in the view. must be false when this method is called.
+
+ The former last element.
+
+
+
+ Removes and returns the first element in the view. must be false when this method is called.
+
+ The former first element.
+
+
+
+ Inserts a range of elements into the view.
+
+ The index into the view at which the elements are to be inserted.
+ The elements to insert.
+ The number of elements in . Must be greater than zero, and the sum of and must be less than or equal to .
+
+
+
+ Removes a range of elements from the view.
+
+ The index into the view at which the range begins.
+ The number of elements in the range. This must be greater than 0 and less than or equal to .
+
+
+
+ Doubles the capacity if necessary to make room for one more element. When this method returns, is false.
+
+
+
+
+ Inserts a single element at the back of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a single element at the front of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a collection of elements into this deque.
+
+ The index at which the collection is inserted.
+ The collection of elements to insert.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Removes a range of elements from this deque.
+
+ The index into the deque at which the range begins.
+ The number of elements to remove.
+ Either or is less than 0.
+ The range [, + ) is not within the range [0, ).
+
+
+
+ Removes and returns the last element of this deque.
+
+ The former last element.
+ The deque is empty.
+
+
+
+ Removes and returns the first element of this deque.
+
+ The former first element.
+ The deque is empty.
+
+
+
+ Removes all items from this deque.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/portable-net40+netcore451+sl5+wp8+wpa81/Nito.AsyncEx.dll b/packages/Nito.AsyncEx.4.0.1/lib/portable-net40+netcore451+sl5+wp8+wpa81/Nito.AsyncEx.dll
new file mode 100644
index 000000000..55e19452a
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/portable-net40+netcore451+sl5+wp8+wpa81/Nito.AsyncEx.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/portable-net40+netcore451+sl5+wp8+wpa81/Nito.AsyncEx.xml b/packages/Nito.AsyncEx.4.0.1/lib/portable-net40+netcore451+sl5+wp8+wpa81/Nito.AsyncEx.xml
new file mode 100644
index 000000000..d497cca9c
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/portable-net40+netcore451+sl5+wp8+wpa81/Nito.AsyncEx.xml
@@ -0,0 +1,3930 @@
+
+
+
+ Nito.AsyncEx
+
+
+
+
+ An async-compatible auto-reset event.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible auto-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous auto-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event. This method may block the calling thread.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately.
+
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately. This method may block the calling thread.
+
+
+
+
+ Sets the event, atomically completing a task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ An async-compatible barrier.
+
+
+
+
+ Mutex used to control access to other fields.
+
+
+
+
+ The TCS used to signal the current phase.
+
+
+
+
+ The current phase.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ The total number of participants.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The asynchronous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ The synchonous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Gets a semi-unique identifier for this asynchronous barrier.
+
+
+
+
+ Gets the current phase of the barrier.
+
+
+
+
+ Gets the number of participants in this barrier.
+
+
+
+
+ Gets the number of participants for this phase that have not yet signalled.
+
+
+
+
+ Starts executing the post-phase action and returns a representing the action.
+
+
+
+
+ Signals completions to this barrier. Returns the task for the current phase, which may already be completed. Returns null if the signal count is greater than the remaining participant count.
+
+ The number of completions to signal.
+ Whether the participants should be removed permanently.
+
+
+
+ Signals the specified number of completions to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+ The cancellation token used to cancel the wait. If this signal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Adds the specified number of participants to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+ The number of participants to add.
+
+
+
+ Adds a participant to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and asynchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and asynchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ An async-compatible condition variable. This type uses Mesa-style semantics (the notifying tasks do not yield).
+
+
+
+
+ The lock associated with this condition variable.
+
+
+
+
+ The queue of waiting tasks.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+
+
+
+ Gets a semi-unique identifier for this asynchronous condition variable.
+
+
+
+
+ Sends a signal to a single task waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Provides a context for asynchronous operations. This class is threadsafe.
+
+
+ may only be called once. After returns, the async context should be disposed.
+
+
+
+
+ The queue holding the actions to run.
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The number of outstanding operations, including actions in the queue.
+
+
+
+
+ Initializes a new instance of the class. This is an advanced operation; most people should use one of the static Run methods instead.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous context. This is the same identifier as the context's .
+
+
+
+
+ Increments the outstanding asynchronous operation count.
+
+
+
+
+ Decrements the outstanding asynchronous operation count.
+
+
+
+
+ Queues a task for execution by . If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The task to queue. May not be null.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Disposes all resources used by this class. This method should NOT be called while is executing.
+
+
+
+
+ Executes all queued actions. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from tasks that are supposed to propagate errors.
+
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task. This method will unwrap and propagate errors from the task.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task proxy.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task proxy. This method will unwrap and propagate errors from the task proxy.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Gets the current for this thread, or null if this thread is not currently running in an .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . Be careful with async delegates; you may need to call and to prevent early termination of this .
+
+
+
+
+ The implementation used by .
+
+
+
+
+ The async context.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context.
+
+
+
+ Gets the async context.
+
+
+
+
+ Dispatches an asynchronous message to the async context. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Dispatches an asynchronous message to the async context, and waits for it to complete.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Responds to the notification that an operation has started by incrementing the outstanding asynchronous operation count.
+
+
+
+
+ Responds to the notification that an operation has completed by decrementing the outstanding asynchronous operation count.
+
+
+
+
+ Creates a copy of the synchronization context.
+
+ A new object.
+
+
+
+ Returns a hash code for this instance.
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+ Determines whether the specified is equal to this instance. It is considered equal if it refers to the same underlying async context as this instance.
+
+ The to compare with this instance.
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+ A blocking queue.
+
+
+
+
+ The underlying blocking collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a blocking enumerable that removes items from the queue. This enumerable only completes after has been called.
+
+ A blocking enumerable that removes items from the queue.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Attempts to add the item to the queue. If the queue has been marked as complete for adding, this method returns false.
+
+ The item to enqueue.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Marks the queue as complete for adding, allowing the enumerator returned from to eventually complete. This method may be called several times.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ A task scheduler which schedules tasks to an async context.
+
+
+
+
+ The async context for this task scheduler.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context for this task scheduler. May not be null.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Queues a to the scheduler. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The to be queued.
+
+
+
+ Determines whether the provided can be executed synchronously in this call, and if it can, executes it.
+
+ The to be executed.
+ A Boolean denoting whether or not task has previously been queued. If this parameter is True, then the task may have been previously queued (scheduled); if False, then the task is known not to have been queued, and this call is being made in order to execute the task inline without queuing it.
+ A Boolean value indicating whether the task was executed inline.
+ The was already executed.
+
+
+
+ Indicates the maximum concurrency level this is able to support.
+
+
+
+
+ Exposes the base method.
+
+ The task to attempt to execute.
+
+
+
+ A thread that executes actions within an .
+
+
+
+
+ The child thread.
+
+
+
+
+ The asynchronous context executed by the child thread.
+
+
+
+
+ A flag used to ensure we only call once during complex join/dispose operations.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands. If is true, then the child thread is an STA thread (throwing if the platform does not support STA threads).
+
+
+
+
+ Gets the executed by this thread.
+
+
+
+
+ Permits the thread to exit, if we have not already done so.
+
+
+
+
+ Requests the thread to exit and returns a task representing the exit of the thread. The thread will exit when all outstanding asynchronous operations complete.
+
+
+
+
+ Requests the thread to exit.
+
+
+
+
+ Gets the for this thread, which can be used to schedule work to this thread.
+
+
+
+
+ An async-compatible countdown event.
+
+
+
+
+ The TCS used to signal this event.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ Creates an async-compatible countdown event.
+
+ The number of signals this event will need before it becomes set. Must be greater than zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous countdown event.
+
+
+
+
+ Gets the current number of remaining signals before this event becomes set.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Attempts to modify the current count by the specified amount. This method returns false if the new current count value would be invalid, or if the count has already reached zero.
+
+ The amount to change the current count. This may be positive or negative, but not zero.
+
+
+
+ Attempts to add the specified value to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Attempts to add the specified value to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Provides asynchronous wrappers.
+
+ The type of the result of the asychronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method. May not be null.
+ The end method. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap. May not be null.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event.
+ The event args.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event. May not be null.
+ The name of the event. May not be null.
+ The event args.
+
+
+
+ Manages the subscription to an event on a target object, triggering a task (and unsubscribing) when the event is raised.
+
+ The type of event arguments passed to the event.
+
+
+
+ The source for our task, which is returned to the user.
+
+
+
+
+ The subscription to the event.
+
+
+
+
+ The object that publishes the event.
+
+
+
+
+ The event to which we subscribe.
+
+
+
+
+ Subscribes to the specified event.
+
+ The object that publishes the event.
+ The event to which we subscribe.
+
+
+
+ Gets the task that is completed when the event is raised.
+
+
+
+
+ Private method that handles event completion. Do not call this method; it is public to avoid security problems when reflecting.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+ The result of the asynchronous operation.
+
+
+
+ Provides asynchronous wrappers.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method.
+ The end method.
+
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Wraps a with a . When the is signalled, the returned is completed. If the handle is already signalled, this method acts synchronously.
+
+ The to observe.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the handle is already signalled or the timeout is zero, this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is (successfully) completed. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled or the cancellation token is already cancelled, this method acts synchronously.
+
+ The to observe.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled, the timeout is zero, or the cancellation token is already cancelled, then this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+
+
+
+
+ Provides support for asynchronous lazy initialization. This type is fully threadsafe.
+
+ The type of object that is being asynchronously initialized.
+
+
+
+ The underlying lazy task.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Initializes a new instance of the class.
+
+ The asynchronous delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lazy instance.
+
+
+
+
+ Whether the asynchronous factory method has started. This is initially false and becomes true when this instance is awaited or after is called.
+
+
+
+
+ Asynchronous infrastructure support. This method permits instances of to be await'ed.
+
+
+
+
+ Starts the asynchronous initialization, if it has not already started.
+
+
+
+
+ A mutual exclusion lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ Whether the lock is taken by a task.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock.
+
+
+
+
+ A task that is completed with the key object for this lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock using the specified wait queue.
+
+ The wait queue used to manage waiters.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+
+
+
+ Releases the lock.
+
+
+
+
+ The disposable which releases the lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ An async-compatible manual-reset event.
+
+
+
+
+ The object used for synchronization.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Creates an async-compatible manual-reset event.
+
+ Whether the manual-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible manual-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous manual-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Sets the event, atomically completing every task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ Resets the event. If the event is already reset, this method does nothing.
+
+
+
+
+ An async-compatible monitor.
+
+
+
+
+ The lock.
+
+
+
+
+ The condition variable.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Gets a semi-unique identifier for this monitor.
+
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Synchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Sends a signal to a single task waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ An async-compatible producer/consumer queue.
+
+ The type of elements contained in the queue.
+
+
+
+ The underlying queue.
+
+
+
+
+ The maximum number of elements allowed in the queue.
+
+
+
+
+ The mutual-exclusion lock protecting the queue.
+
+
+
+
+ A condition variable that is signalled when the queue is not full.
+
+
+
+
+ A condition variable that is signalled when the queue is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the queue is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements and a maximum element count.
+
+ The initial elements to place in the queue.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements.
+
+ The initial elements to place in the queue.
+
+
+
+ Creates a new async-compatible producer/consumer queue with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue.
+
+
+
+
+ Whether the queue is empty.
+
+
+
+
+ Whether the queue is full.
+
+
+
+
+ Releases resources held by this instance. After disposal, any use of this instance is undefined.
+
+
+
+
+ Asynchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Attempts to enqueue an item.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related enqueue operations. May be null if this is the only enqueue operation.
+
+
+
+ Attempts to enqueue an item. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. This method may block the calling thread. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item.
+
+ A cancellation token that can be used to abort the dequeue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related dequeue operations. May be null if this is the only dequeue operation.
+
+
+
+ Attempts to dequeue an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ The result of a TryDequeue, DequeueFromAny, or TryDequeueFromAny operation.
+
+
+
+
+ The queue from which the item was dequeued, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The dequeued item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ A reader/writer lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as writers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as upgradeable readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to upgrade a reader lock to a writer lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The current upgradeable reader lock key, if any. If this is not null, then there is an upgradeable reader lock held.
+
+
+
+
+ Number of reader locks held (including an upgradeable reader lock, if applicable); -1 if a writer lock is held; 0 if no locks are held.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ A task that is completed with the reader key object for this lock.
+
+
+
+
+ A task that is completed with the writer key object for this lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Applies a continuation to the task that will call if the task is canceled. This method may not be called while holding the sync lock.
+
+ The task to observe for cancellation.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously upgrades a reader lock to a writer lock. This method assumes the sync lock is already held.
+
+
+
+
+ Downgrades a writer lock to a reader lock. This method assumes the sync lock is already held.
+
+
+
+
+ Grants lock(s) to waiting tasks. This method assumes the sync lock is already held.
+
+
+
+
+ Releases the lock as a reader.
+
+
+
+
+ Releases the lock as a writer.
+
+
+
+
+ Releases the lock as an upgradeable reader.
+
+
+
+
+ The disposable which releases the reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which releases the writer lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which manages the upgradeable reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ The task doing the upgrade.
+
+
+
+
+ A task that is completed with the upgrade key object for this key.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Gets a value indicating whether this lock has been upgraded to a write lock.
+
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+
+
+
+ Downgrades the writer lock to a reader lock.
+
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which downgrades an upgradeable reader key.
+
+
+
+
+ The upgradeable reader key to downgrade.
+
+
+
+
+ Creates the upgrade key for an upgradeable reader key.
+
+ The upgradeable reader key to downgrade. May not be null.
+
+
+
+ Downgrade the upgradeable reader key.
+
+
+
+
+ An async-compatible semaphore. Alternatively, you could use SemaphoreSlim on .NET 4.5 / Windows Store.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the semaphore.
+
+
+
+
+ The number of waits that will be immediately granted.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+ The wait queue used to manage waiters.
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous semaphore.
+
+
+
+
+ Gets the number of slots currently available on this semaphore.
+
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ A collection of cancelable instances. Implementations must be threadsafe and must work correctly if the caller is holding a lock.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ Gets whether the queue is empty.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. The returned task must support both synchronous and asynchronous waits.
+
+ The queued task.
+
+
+
+ Removes a single entry in the wait queue. Returns a disposable that completes that entry.
+
+ The result used to complete the wait queue entry. If this isn't needed, use default(T).
+
+
+
+ Removes all entries in the wait queue. Returns a disposable that completes all entries.
+
+ The result used to complete the wait queue entries. If this isn't needed, use default(T).
+
+
+
+ Attempts to remove an entry from the wait queue. Returns a disposable that cancels the entry.
+
+ The task to cancel.
+ A value indicating whether the entry was found and canceled.
+
+
+
+ Removes all entries from the wait queue. Returns a disposable that cancels all entries.
+
+
+
+
+ Provides extension methods for wait queues.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ A synchronization object taken while cancelling the entry.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ The default wait queue implementation, which uses a double-ended queue.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ An awaitable wrapper around a task whose result is disposable. The wrapper is not disposable, so this prevents usage errors like "using (MyAsync())" when the appropriate usage should be "using (await MyAsync())".
+
+ The type of the result of the underlying task.
+
+
+
+ The underlying task.
+
+
+
+
+ Initializes a new awaitable wrapper around the specified task.
+
+ The underlying task to wrap.
+
+
+
+ Returns the underlying task.
+
+
+
+
+ Implicit conversion to the underlying task.
+
+ The awaitable wrapper.
+
+
+
+ Infrastructure. Returns the task awaiter for the underlying task.
+
+
+
+
+ Infrastructure. Returns a configured task awaiter for the underlying task.
+
+ Whether to attempt to marshal the continuation back to the captured context.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Returns a that is canceled when this is canceled. This method will leak resources if the cancellation token is long-lived; use for a similar approach with proper resource management.
+
+ The to monitor.
+ A that is canceled when this is canceled.
+
+
+
+ Returns a which holds the task for this cancellation token.
+
+ The cancellation token to observe.
+
+
+
+ Holds the task for a cancellation token, as well as the token registration. The registration is disposed when this instance is disposed.
+
+
+
+
+ The cancellation token registration, if any. This is null if the registration was not necessary.
+
+
+
+
+ Creates a task for the specified cancellation token, registering with the token if necessary.
+
+ The cancellation token to observe.
+
+
+
+ Gets the task for the source cancellation token.
+
+
+
+
+ Disposes the cancellation token registration, if any. Note that this may cause to never complete.
+
+
+
+
+ Helper methods for cancellation tokens.
+
+
+
+
+ Initializes the static members.
+
+
+
+
+ Gets , a cancellation token that is never canceled.
+
+
+
+
+ Gets a cancellation token that is already canceled.
+
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+ The options to use for the task continuation.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+
+
+
+ Manages the deferrals for a "command" event that may have asynchonous handlers.
+
+
+
+
+ The countdown event, triggered when all deferrals have completed. This is null if there are no deferrals.
+
+
+
+
+ Gets a deferral. The deferral is complete when disposed.
+
+ The deferral.
+
+
+
+ Notifies the manager that all deferrals have been requested, and returns a task that is completed when all deferrals have completed.
+
+ A task that is completed when all deferrals have completed.
+
+
+
+ A deferral.
+
+
+
+
+ The countdown event of the deferral manager.
+
+
+
+
+ Creates a new deferral referencing the countdown event of the deferral manager.
+
+ The countdown event of the deferral manager.
+
+
+
+ Completes the deferral.
+
+
+
+
+ Provides helper (non-extension) methods dealing with exceptions.
+
+
+
+
+ Attempts to prepare the exception for re-throwing by preserving the stack trace. The returned exception should be immediately thrown.
+
+ The exception. May not be null.
+ The that was passed into this method.
+
+
+
+ Allocates Ids for instances on demand. 0 is an invalid/unassigned Id. Ids may be non-unique in very long-running systems. This is similar to the Id system used by and .
+
+ The type for which ids are generated.
+
+
+
+ The last id generated for this type. This is 0 if no ids have been generated.
+
+
+
+
+ Returns the id, allocating it if necessary.
+
+ A reference to the field containing the id.
+
+
+
+ A that may or may not also reference its own . Instances of this type should always be disposed.
+
+
+
+
+ The , if any. If this is not null, then is _cts.Token.
+
+
+
+
+ The . If is not null, then this is _cts.Token.
+
+
+
+
+ Creates a normalized cancellation token that can never be canceled.
+
+
+
+
+ Creates a normalized cancellation token from a . is set to the property of .
+
+ The source for this token.
+
+
+
+ Creates a normalized cancellation token from a . is set to .
+
+ The source for this token.
+
+
+
+ Releases any resources used by this normalized cancellation token.
+
+
+
+
+ Gets the for this normalized cancellation token.
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets a task that completes successfully when completes (successfully, faulted, or canceled). This property never changes and is never null.
+
+
+
+
+ Gets the current task status. This property raises a notification when the task completes.
+
+
+
+
+ Gets whether the task has completed. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task is busy (not completed). This property raises a notification when the value changes to false.
+
+
+
+
+ Gets whether the task has completed successfully. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task has been canceled. This property raises a notification only if the task is canceled (i.e., if the value changes to true).
+
+
+
+
+ Gets whether the task has faulted. This property raises a notification only if the task faults (i.e., if the value changes to true).
+
+
+
+
+ Gets the wrapped faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the error message for the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets the result of the task. Returns the default value of if the task has not completed successfully. This property raises a notification when the task completes successfully.
+
+
+
+
+ Factory for task completion notifiers.
+
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The type of the task result.
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ The source (controller) of a "pause token", which can be used to cooperatively pause and unpause operations.
+
+
+
+
+ The MRE that manages the "pause" logic. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether or not this source (and its tokens) are in the paused state.
+
+
+
+
+ Gets a pause token controlled by this source.
+
+
+
+
+ A type that allows an operation to be cooperatively paused.
+
+
+
+
+ The MRE that manages the "pause" logic, or null if this token can never be paused. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether this token can ever possibly be paused.
+
+
+
+
+ Whether or not this token is in the paused state.
+
+
+
+
+ Asynchronously waits until the pause token is not paused.
+
+
+
+
+ Asynchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ Synchronously waits until the pause token is not paused.
+
+
+
+
+ Synchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ A progress implementation that stores progress updates in a property. If this instance is created on a UI thread, its property is suitable for data binding.
+
+ The type of progress value.
+
+
+
+ The context of the thread that created this instance.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The initial progress value.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Occurs when the property value changes.
+
+
+
+
+ Provides helper types for .
+
+
+
+
+ Retrieves the current synchronization context, or the default synchronization context if there is no current synchronization context.
+
+
+
+
+ Utility class for temporarily switching implementations.
+
+
+
+
+ The previous .
+
+
+
+
+ Whether this object has already been disposed.
+
+
+
+
+ Initializes a new instance of the class, installing the new .
+
+ The new .
+
+
+
+ Restores the old .
+
+
+
+
+ Provides synchronous extension methods for tasks.
+
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ The result of the task.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The result of the task.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed.
+
+
+
+ Represents the producer side of a unbound to a delegate, providing access to the consumer side through the property.
+
+
+
+
+ The underlying TCS.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified state.
+
+ The state to use as the underlying 's .
+
+
+
+ Initializes a new instance of the class with the specified options.
+
+ The options to use when creating the underlying .
+
+
+
+ Initializes a new instance of the class with the specified state and options.
+
+ The state to use as the underlying 's .
+ The options to use when creating the underlying .
+
+
+
+ Gets the created by this .
+
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ The underlying has already been completed.
+
+
+
+ Transitions the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the target asynchronous operation.
+ The type of the result of the source asynchronous operation.
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ The delegate used to retrieve the result. This is only invoked if indicates successful completion. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a with the specified value, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Attempts to complete a , forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Provides completed task constants.
+
+
+
+
+ A task that has been completed with the value true.
+
+
+
+
+ A task that has been completed with the value false.
+
+
+
+
+ A task that has been completed with the value 0.
+
+
+
+
+ A task that has been completed with the value -1.
+
+
+
+
+ A that has been completed.
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides completed task constants.
+
+ The type of the task result.
+
+
+
+ A task that has been completed with the default value of .
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides extension methods for tasks.
+
+
+
+
+ Creates a new array of tasks which complete in order.
+
+ The type of the results of the tasks.
+ The tasks to order by completion.
+
+
+
+ Provides extension methods for task factories.
+
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ A double-ended queue (deque), which provides O(1) indexed access, O(1) removals from the front and back, amortized O(1) insertions to the front and back, and O(N) insertions and removals anywhere else (with the operations getting slower as the index approaches the middle).
+
+ The type of elements contained in the deque.
+
+
+
+ The default capacity.
+
+
+
+
+ The circular buffer that holds the view.
+
+
+
+
+ The offset into where the view begins.
+
+
+
+
+ Initializes a new instance of the class with the specified capacity.
+
+ The initial capacity. Must be greater than 0.
+
+
+
+ Initializes a new instance of the class with the elements from the specified collection.
+
+ The collection.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a value indicating whether this list is read-only. This implementation always returns false.
+
+ true if this list is read-only; otherwise, false.
+
+
+
+ Gets or sets the item at the specified index.
+
+ The index of the item to get or set.
+ is not a valid index in this list.
+ This property is set and the list is read-only.
+
+
+
+ Inserts an item to this list at the specified index.
+
+ The zero-based index at which should be inserted.
+ The object to insert into this list.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Determines the index of a specific item in this list.
+
+ The object to locate in this list.
+ The index of if found in this list; otherwise, -1.
+
+
+
+ Adds an item to the end of this list.
+
+ The object to add to this list.
+
+ This list is read-only.
+
+
+
+
+ Determines whether this list contains a specific value.
+
+ The object to locate in this list.
+
+ true if is found in this list; otherwise, false.
+
+
+
+
+ Copies the elements of this list to an , starting at a particular index.
+
+ The one-dimensional that is the destination of the elements copied from this slice. The must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+ is null.
+
+
+ is less than 0.
+
+
+ is equal to or greater than the length of .
+ -or-
+ The number of elements in the source is greater than the available space from to the end of the destination .
+
+
+
+
+ Removes the first occurrence of a specific object from this list.
+
+ The object to remove from this list.
+
+ true if was successfully removed from this list; otherwise, false. This method also returns false if is not found in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Checks the argument to see if it refers to a valid insertion point in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Checks the argument to see if it refers to an existing element in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an existing element for the source.
+
+
+
+ Checks the and arguments for validity when applied to a source of a given length. Allows 0-element ranges, including a 0-element range at the end of the source.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into source at which the range begins.
+ The number of elements in the range.
+ Either or is less than 0.
+ The range [offset, offset + count) is not within the range [0, sourceLength).
+
+
+
+ Gets a value indicating whether this instance is empty.
+
+
+
+
+ Gets a value indicating whether this instance is at full capacity.
+
+
+
+
+ Gets a value indicating whether the buffer is "split" (meaning the beginning of the view is at a later index in than the end).
+
+
+
+
+ Gets or sets the capacity for this deque. This value must always be greater than zero, and this property cannot be set to a value less than .
+
+ Capacity cannot be set to a value less than .
+
+
+
+ Gets the number of elements contained in this deque.
+
+ The number of elements contained in this deque.
+
+
+
+ Applies the offset to , resulting in a buffer index.
+
+ The deque index.
+ The buffer index.
+
+
+
+ Gets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element at the specified index.
+
+
+
+ Sets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Inserts an element at the specified view index.
+
+ The zero-based view index at which the element should be inserted. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Removes an element at the specified view index.
+
+ The zero-based view index of the element to remove. This index is guaranteed to be valid.
+
+
+
+ Increments by using modulo- arithmetic.
+
+ The value by which to increase . May not be negative.
+ The value of after it was incremented.
+
+
+
+ Decrements by using modulo- arithmetic.
+
+ The value by which to reduce . May not be negative or greater than .
+ The value of before it was decremented.
+
+
+
+ Inserts a single element to the back of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Inserts a single element to the front of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Removes and returns the last element in the view. must be false when this method is called.
+
+ The former last element.
+
+
+
+ Removes and returns the first element in the view. must be false when this method is called.
+
+ The former first element.
+
+
+
+ Inserts a range of elements into the view.
+
+ The index into the view at which the elements are to be inserted.
+ The elements to insert.
+ The number of elements in . Must be greater than zero, and the sum of and must be less than or equal to .
+
+
+
+ Removes a range of elements from the view.
+
+ The index into the view at which the range begins.
+ The number of elements in the range. This must be greater than 0 and less than or equal to .
+
+
+
+ Doubles the capacity if necessary to make room for one more element. When this method returns, is false.
+
+
+
+
+ Inserts a single element at the back of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a single element at the front of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a collection of elements into this deque.
+
+ The index at which the collection is inserted.
+ The collection of elements to insert.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Removes a range of elements from this deque.
+
+ The index into the deque at which the range begins.
+ The number of elements to remove.
+ Either or is less than 0.
+ The range [, + ) is not within the range [0, ).
+
+
+
+ Removes and returns the last element of this deque.
+
+ The former last element.
+ The deque is empty.
+
+
+
+ Removes and returns the first element of this deque.
+
+ The former first element.
+ The deque is empty.
+
+
+
+ Removes all items from this deque.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/portable-net40+netcore451/Nito.AsyncEx.Concurrent.dll b/packages/Nito.AsyncEx.4.0.1/lib/portable-net40+netcore451/Nito.AsyncEx.Concurrent.dll
new file mode 100644
index 000000000..aca25f828
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/portable-net40+netcore451/Nito.AsyncEx.Concurrent.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/portable-net40+netcore451/Nito.AsyncEx.Concurrent.xml b/packages/Nito.AsyncEx.4.0.1/lib/portable-net40+netcore451/Nito.AsyncEx.Concurrent.xml
new file mode 100644
index 000000000..497b59a89
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/portable-net40+netcore451/Nito.AsyncEx.Concurrent.xml
@@ -0,0 +1,401 @@
+
+
+
+ Nito.AsyncEx.Concurrent
+
+
+
+
+ An async-compatible producer/consumer collection.
+
+ The type of elements contained in the collection.
+
+
+
+ The underlying collection.
+
+
+
+
+ The maximum number of elements allowed in the collection.
+
+
+
+
+ The mutual-exclusion lock protecting the collection.
+
+
+
+
+ A condition variable that is signalled when the collection is not full.
+
+
+
+
+ A condition variable that is signalled when the collection is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the collection is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer collection wrapping the specified collection and with a maximum element count.
+
+ The collection to wrap.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer collection wrapping the specified collection.
+
+ The collection to wrap.
+
+
+
+ Creates a new async-compatible producer/consumer collection with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer collection.
+
+
+
+
+ Whether the collection is empty.
+
+
+
+
+ Whether the collection is full.
+
+
+
+
+ Asynchronously marks the producer/consumer collection as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer collection as complete for adding.
+
+
+
+
+ Attempts to add an item.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related add operations. May be null if this is the only add operation.
+
+
+
+ Attempts to add an item. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer collection has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer collection has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer collection.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to take an item.
+
+ A cancellation token that can be used to abort the take operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related take operations. May be null if this is the only take operation.
+
+
+
+ Attempts to take an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection.
+
+
+
+
+ Attempts to take an item from the producer/consumer collection. This method may block the calling thread.
+
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed.
+
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed. This method may block the calling thread.
+
+
+
+
+ The result of a TryTake, TakeFromAny, or TryTakeFromAny operation.
+
+
+
+
+ The collection from which the item was taken, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The producer/consumer collections.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The producer/consumer collections.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The array of producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The array of producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The array of producer/consumer collections.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The array of producer/consumer collections.
+
+
+
+ A progress implementation that sends progress reports to a producer/consumer collection.
+
+ The type of progress value.
+
+
+
+ The producer/consumer collection that receives progress reports.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The producer/consumer collection that receives progress reports.
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/portable-net40+netcore451/Nito.AsyncEx.dll b/packages/Nito.AsyncEx.4.0.1/lib/portable-net40+netcore451/Nito.AsyncEx.dll
new file mode 100644
index 000000000..55e19452a
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/portable-net40+netcore451/Nito.AsyncEx.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/portable-net40+netcore451/Nito.AsyncEx.xml b/packages/Nito.AsyncEx.4.0.1/lib/portable-net40+netcore451/Nito.AsyncEx.xml
new file mode 100644
index 000000000..d497cca9c
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/portable-net40+netcore451/Nito.AsyncEx.xml
@@ -0,0 +1,3930 @@
+
+
+
+ Nito.AsyncEx
+
+
+
+
+ An async-compatible auto-reset event.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible auto-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous auto-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event. This method may block the calling thread.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately.
+
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately. This method may block the calling thread.
+
+
+
+
+ Sets the event, atomically completing a task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ An async-compatible barrier.
+
+
+
+
+ Mutex used to control access to other fields.
+
+
+
+
+ The TCS used to signal the current phase.
+
+
+
+
+ The current phase.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ The total number of participants.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The asynchronous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ The synchonous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Gets a semi-unique identifier for this asynchronous barrier.
+
+
+
+
+ Gets the current phase of the barrier.
+
+
+
+
+ Gets the number of participants in this barrier.
+
+
+
+
+ Gets the number of participants for this phase that have not yet signalled.
+
+
+
+
+ Starts executing the post-phase action and returns a representing the action.
+
+
+
+
+ Signals completions to this barrier. Returns the task for the current phase, which may already be completed. Returns null if the signal count is greater than the remaining participant count.
+
+ The number of completions to signal.
+ Whether the participants should be removed permanently.
+
+
+
+ Signals the specified number of completions to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+ The cancellation token used to cancel the wait. If this signal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Adds the specified number of participants to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+ The number of participants to add.
+
+
+
+ Adds a participant to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and asynchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and asynchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ An async-compatible condition variable. This type uses Mesa-style semantics (the notifying tasks do not yield).
+
+
+
+
+ The lock associated with this condition variable.
+
+
+
+
+ The queue of waiting tasks.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+
+
+
+ Gets a semi-unique identifier for this asynchronous condition variable.
+
+
+
+
+ Sends a signal to a single task waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Provides a context for asynchronous operations. This class is threadsafe.
+
+
+ may only be called once. After returns, the async context should be disposed.
+
+
+
+
+ The queue holding the actions to run.
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The number of outstanding operations, including actions in the queue.
+
+
+
+
+ Initializes a new instance of the class. This is an advanced operation; most people should use one of the static Run methods instead.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous context. This is the same identifier as the context's .
+
+
+
+
+ Increments the outstanding asynchronous operation count.
+
+
+
+
+ Decrements the outstanding asynchronous operation count.
+
+
+
+
+ Queues a task for execution by . If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The task to queue. May not be null.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Disposes all resources used by this class. This method should NOT be called while is executing.
+
+
+
+
+ Executes all queued actions. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from tasks that are supposed to propagate errors.
+
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task. This method will unwrap and propagate errors from the task.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task proxy.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task proxy. This method will unwrap and propagate errors from the task proxy.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Gets the current for this thread, or null if this thread is not currently running in an .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . Be careful with async delegates; you may need to call and to prevent early termination of this .
+
+
+
+
+ The implementation used by .
+
+
+
+
+ The async context.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context.
+
+
+
+ Gets the async context.
+
+
+
+
+ Dispatches an asynchronous message to the async context. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Dispatches an asynchronous message to the async context, and waits for it to complete.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Responds to the notification that an operation has started by incrementing the outstanding asynchronous operation count.
+
+
+
+
+ Responds to the notification that an operation has completed by decrementing the outstanding asynchronous operation count.
+
+
+
+
+ Creates a copy of the synchronization context.
+
+ A new object.
+
+
+
+ Returns a hash code for this instance.
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+ Determines whether the specified is equal to this instance. It is considered equal if it refers to the same underlying async context as this instance.
+
+ The to compare with this instance.
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+ A blocking queue.
+
+
+
+
+ The underlying blocking collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a blocking enumerable that removes items from the queue. This enumerable only completes after has been called.
+
+ A blocking enumerable that removes items from the queue.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Attempts to add the item to the queue. If the queue has been marked as complete for adding, this method returns false.
+
+ The item to enqueue.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Marks the queue as complete for adding, allowing the enumerator returned from to eventually complete. This method may be called several times.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ A task scheduler which schedules tasks to an async context.
+
+
+
+
+ The async context for this task scheduler.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context for this task scheduler. May not be null.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Queues a to the scheduler. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The to be queued.
+
+
+
+ Determines whether the provided can be executed synchronously in this call, and if it can, executes it.
+
+ The to be executed.
+ A Boolean denoting whether or not task has previously been queued. If this parameter is True, then the task may have been previously queued (scheduled); if False, then the task is known not to have been queued, and this call is being made in order to execute the task inline without queuing it.
+ A Boolean value indicating whether the task was executed inline.
+ The was already executed.
+
+
+
+ Indicates the maximum concurrency level this is able to support.
+
+
+
+
+ Exposes the base method.
+
+ The task to attempt to execute.
+
+
+
+ A thread that executes actions within an .
+
+
+
+
+ The child thread.
+
+
+
+
+ The asynchronous context executed by the child thread.
+
+
+
+
+ A flag used to ensure we only call once during complex join/dispose operations.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands. If is true, then the child thread is an STA thread (throwing if the platform does not support STA threads).
+
+
+
+
+ Gets the executed by this thread.
+
+
+
+
+ Permits the thread to exit, if we have not already done so.
+
+
+
+
+ Requests the thread to exit and returns a task representing the exit of the thread. The thread will exit when all outstanding asynchronous operations complete.
+
+
+
+
+ Requests the thread to exit.
+
+
+
+
+ Gets the for this thread, which can be used to schedule work to this thread.
+
+
+
+
+ An async-compatible countdown event.
+
+
+
+
+ The TCS used to signal this event.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ Creates an async-compatible countdown event.
+
+ The number of signals this event will need before it becomes set. Must be greater than zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous countdown event.
+
+
+
+
+ Gets the current number of remaining signals before this event becomes set.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Attempts to modify the current count by the specified amount. This method returns false if the new current count value would be invalid, or if the count has already reached zero.
+
+ The amount to change the current count. This may be positive or negative, but not zero.
+
+
+
+ Attempts to add the specified value to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Attempts to add the specified value to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Provides asynchronous wrappers.
+
+ The type of the result of the asychronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method. May not be null.
+ The end method. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap. May not be null.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event.
+ The event args.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event. May not be null.
+ The name of the event. May not be null.
+ The event args.
+
+
+
+ Manages the subscription to an event on a target object, triggering a task (and unsubscribing) when the event is raised.
+
+ The type of event arguments passed to the event.
+
+
+
+ The source for our task, which is returned to the user.
+
+
+
+
+ The subscription to the event.
+
+
+
+
+ The object that publishes the event.
+
+
+
+
+ The event to which we subscribe.
+
+
+
+
+ Subscribes to the specified event.
+
+ The object that publishes the event.
+ The event to which we subscribe.
+
+
+
+ Gets the task that is completed when the event is raised.
+
+
+
+
+ Private method that handles event completion. Do not call this method; it is public to avoid security problems when reflecting.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+ The result of the asynchronous operation.
+
+
+
+ Provides asynchronous wrappers.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method.
+ The end method.
+
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Wraps a with a . When the is signalled, the returned is completed. If the handle is already signalled, this method acts synchronously.
+
+ The to observe.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the handle is already signalled or the timeout is zero, this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is (successfully) completed. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled or the cancellation token is already cancelled, this method acts synchronously.
+
+ The to observe.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled, the timeout is zero, or the cancellation token is already cancelled, then this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+
+
+
+
+ Provides support for asynchronous lazy initialization. This type is fully threadsafe.
+
+ The type of object that is being asynchronously initialized.
+
+
+
+ The underlying lazy task.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Initializes a new instance of the class.
+
+ The asynchronous delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lazy instance.
+
+
+
+
+ Whether the asynchronous factory method has started. This is initially false and becomes true when this instance is awaited or after is called.
+
+
+
+
+ Asynchronous infrastructure support. This method permits instances of to be await'ed.
+
+
+
+
+ Starts the asynchronous initialization, if it has not already started.
+
+
+
+
+ A mutual exclusion lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ Whether the lock is taken by a task.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock.
+
+
+
+
+ A task that is completed with the key object for this lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock using the specified wait queue.
+
+ The wait queue used to manage waiters.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+
+
+
+ Releases the lock.
+
+
+
+
+ The disposable which releases the lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ An async-compatible manual-reset event.
+
+
+
+
+ The object used for synchronization.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Creates an async-compatible manual-reset event.
+
+ Whether the manual-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible manual-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous manual-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Sets the event, atomically completing every task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ Resets the event. If the event is already reset, this method does nothing.
+
+
+
+
+ An async-compatible monitor.
+
+
+
+
+ The lock.
+
+
+
+
+ The condition variable.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Gets a semi-unique identifier for this monitor.
+
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Synchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Sends a signal to a single task waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ An async-compatible producer/consumer queue.
+
+ The type of elements contained in the queue.
+
+
+
+ The underlying queue.
+
+
+
+
+ The maximum number of elements allowed in the queue.
+
+
+
+
+ The mutual-exclusion lock protecting the queue.
+
+
+
+
+ A condition variable that is signalled when the queue is not full.
+
+
+
+
+ A condition variable that is signalled when the queue is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the queue is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements and a maximum element count.
+
+ The initial elements to place in the queue.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements.
+
+ The initial elements to place in the queue.
+
+
+
+ Creates a new async-compatible producer/consumer queue with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue.
+
+
+
+
+ Whether the queue is empty.
+
+
+
+
+ Whether the queue is full.
+
+
+
+
+ Releases resources held by this instance. After disposal, any use of this instance is undefined.
+
+
+
+
+ Asynchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Attempts to enqueue an item.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related enqueue operations. May be null if this is the only enqueue operation.
+
+
+
+ Attempts to enqueue an item. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. This method may block the calling thread. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item.
+
+ A cancellation token that can be used to abort the dequeue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related dequeue operations. May be null if this is the only dequeue operation.
+
+
+
+ Attempts to dequeue an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ The result of a TryDequeue, DequeueFromAny, or TryDequeueFromAny operation.
+
+
+
+
+ The queue from which the item was dequeued, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The dequeued item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ A reader/writer lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as writers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as upgradeable readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to upgrade a reader lock to a writer lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The current upgradeable reader lock key, if any. If this is not null, then there is an upgradeable reader lock held.
+
+
+
+
+ Number of reader locks held (including an upgradeable reader lock, if applicable); -1 if a writer lock is held; 0 if no locks are held.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ A task that is completed with the reader key object for this lock.
+
+
+
+
+ A task that is completed with the writer key object for this lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Applies a continuation to the task that will call if the task is canceled. This method may not be called while holding the sync lock.
+
+ The task to observe for cancellation.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously upgrades a reader lock to a writer lock. This method assumes the sync lock is already held.
+
+
+
+
+ Downgrades a writer lock to a reader lock. This method assumes the sync lock is already held.
+
+
+
+
+ Grants lock(s) to waiting tasks. This method assumes the sync lock is already held.
+
+
+
+
+ Releases the lock as a reader.
+
+
+
+
+ Releases the lock as a writer.
+
+
+
+
+ Releases the lock as an upgradeable reader.
+
+
+
+
+ The disposable which releases the reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which releases the writer lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which manages the upgradeable reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ The task doing the upgrade.
+
+
+
+
+ A task that is completed with the upgrade key object for this key.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Gets a value indicating whether this lock has been upgraded to a write lock.
+
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+
+
+
+ Downgrades the writer lock to a reader lock.
+
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which downgrades an upgradeable reader key.
+
+
+
+
+ The upgradeable reader key to downgrade.
+
+
+
+
+ Creates the upgrade key for an upgradeable reader key.
+
+ The upgradeable reader key to downgrade. May not be null.
+
+
+
+ Downgrade the upgradeable reader key.
+
+
+
+
+ An async-compatible semaphore. Alternatively, you could use SemaphoreSlim on .NET 4.5 / Windows Store.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the semaphore.
+
+
+
+
+ The number of waits that will be immediately granted.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+ The wait queue used to manage waiters.
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous semaphore.
+
+
+
+
+ Gets the number of slots currently available on this semaphore.
+
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ A collection of cancelable instances. Implementations must be threadsafe and must work correctly if the caller is holding a lock.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ Gets whether the queue is empty.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. The returned task must support both synchronous and asynchronous waits.
+
+ The queued task.
+
+
+
+ Removes a single entry in the wait queue. Returns a disposable that completes that entry.
+
+ The result used to complete the wait queue entry. If this isn't needed, use default(T).
+
+
+
+ Removes all entries in the wait queue. Returns a disposable that completes all entries.
+
+ The result used to complete the wait queue entries. If this isn't needed, use default(T).
+
+
+
+ Attempts to remove an entry from the wait queue. Returns a disposable that cancels the entry.
+
+ The task to cancel.
+ A value indicating whether the entry was found and canceled.
+
+
+
+ Removes all entries from the wait queue. Returns a disposable that cancels all entries.
+
+
+
+
+ Provides extension methods for wait queues.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ A synchronization object taken while cancelling the entry.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ The default wait queue implementation, which uses a double-ended queue.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ An awaitable wrapper around a task whose result is disposable. The wrapper is not disposable, so this prevents usage errors like "using (MyAsync())" when the appropriate usage should be "using (await MyAsync())".
+
+ The type of the result of the underlying task.
+
+
+
+ The underlying task.
+
+
+
+
+ Initializes a new awaitable wrapper around the specified task.
+
+ The underlying task to wrap.
+
+
+
+ Returns the underlying task.
+
+
+
+
+ Implicit conversion to the underlying task.
+
+ The awaitable wrapper.
+
+
+
+ Infrastructure. Returns the task awaiter for the underlying task.
+
+
+
+
+ Infrastructure. Returns a configured task awaiter for the underlying task.
+
+ Whether to attempt to marshal the continuation back to the captured context.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Returns a that is canceled when this is canceled. This method will leak resources if the cancellation token is long-lived; use for a similar approach with proper resource management.
+
+ The to monitor.
+ A that is canceled when this is canceled.
+
+
+
+ Returns a which holds the task for this cancellation token.
+
+ The cancellation token to observe.
+
+
+
+ Holds the task for a cancellation token, as well as the token registration. The registration is disposed when this instance is disposed.
+
+
+
+
+ The cancellation token registration, if any. This is null if the registration was not necessary.
+
+
+
+
+ Creates a task for the specified cancellation token, registering with the token if necessary.
+
+ The cancellation token to observe.
+
+
+
+ Gets the task for the source cancellation token.
+
+
+
+
+ Disposes the cancellation token registration, if any. Note that this may cause to never complete.
+
+
+
+
+ Helper methods for cancellation tokens.
+
+
+
+
+ Initializes the static members.
+
+
+
+
+ Gets , a cancellation token that is never canceled.
+
+
+
+
+ Gets a cancellation token that is already canceled.
+
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+ The options to use for the task continuation.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+
+
+
+ Manages the deferrals for a "command" event that may have asynchonous handlers.
+
+
+
+
+ The countdown event, triggered when all deferrals have completed. This is null if there are no deferrals.
+
+
+
+
+ Gets a deferral. The deferral is complete when disposed.
+
+ The deferral.
+
+
+
+ Notifies the manager that all deferrals have been requested, and returns a task that is completed when all deferrals have completed.
+
+ A task that is completed when all deferrals have completed.
+
+
+
+ A deferral.
+
+
+
+
+ The countdown event of the deferral manager.
+
+
+
+
+ Creates a new deferral referencing the countdown event of the deferral manager.
+
+ The countdown event of the deferral manager.
+
+
+
+ Completes the deferral.
+
+
+
+
+ Provides helper (non-extension) methods dealing with exceptions.
+
+
+
+
+ Attempts to prepare the exception for re-throwing by preserving the stack trace. The returned exception should be immediately thrown.
+
+ The exception. May not be null.
+ The that was passed into this method.
+
+
+
+ Allocates Ids for instances on demand. 0 is an invalid/unassigned Id. Ids may be non-unique in very long-running systems. This is similar to the Id system used by and .
+
+ The type for which ids are generated.
+
+
+
+ The last id generated for this type. This is 0 if no ids have been generated.
+
+
+
+
+ Returns the id, allocating it if necessary.
+
+ A reference to the field containing the id.
+
+
+
+ A that may or may not also reference its own . Instances of this type should always be disposed.
+
+
+
+
+ The , if any. If this is not null, then is _cts.Token.
+
+
+
+
+ The . If is not null, then this is _cts.Token.
+
+
+
+
+ Creates a normalized cancellation token that can never be canceled.
+
+
+
+
+ Creates a normalized cancellation token from a . is set to the property of .
+
+ The source for this token.
+
+
+
+ Creates a normalized cancellation token from a . is set to .
+
+ The source for this token.
+
+
+
+ Releases any resources used by this normalized cancellation token.
+
+
+
+
+ Gets the for this normalized cancellation token.
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets a task that completes successfully when completes (successfully, faulted, or canceled). This property never changes and is never null.
+
+
+
+
+ Gets the current task status. This property raises a notification when the task completes.
+
+
+
+
+ Gets whether the task has completed. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task is busy (not completed). This property raises a notification when the value changes to false.
+
+
+
+
+ Gets whether the task has completed successfully. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task has been canceled. This property raises a notification only if the task is canceled (i.e., if the value changes to true).
+
+
+
+
+ Gets whether the task has faulted. This property raises a notification only if the task faults (i.e., if the value changes to true).
+
+
+
+
+ Gets the wrapped faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the error message for the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets the result of the task. Returns the default value of if the task has not completed successfully. This property raises a notification when the task completes successfully.
+
+
+
+
+ Factory for task completion notifiers.
+
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The type of the task result.
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ The source (controller) of a "pause token", which can be used to cooperatively pause and unpause operations.
+
+
+
+
+ The MRE that manages the "pause" logic. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether or not this source (and its tokens) are in the paused state.
+
+
+
+
+ Gets a pause token controlled by this source.
+
+
+
+
+ A type that allows an operation to be cooperatively paused.
+
+
+
+
+ The MRE that manages the "pause" logic, or null if this token can never be paused. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether this token can ever possibly be paused.
+
+
+
+
+ Whether or not this token is in the paused state.
+
+
+
+
+ Asynchronously waits until the pause token is not paused.
+
+
+
+
+ Asynchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ Synchronously waits until the pause token is not paused.
+
+
+
+
+ Synchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ A progress implementation that stores progress updates in a property. If this instance is created on a UI thread, its property is suitable for data binding.
+
+ The type of progress value.
+
+
+
+ The context of the thread that created this instance.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The initial progress value.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Occurs when the property value changes.
+
+
+
+
+ Provides helper types for .
+
+
+
+
+ Retrieves the current synchronization context, or the default synchronization context if there is no current synchronization context.
+
+
+
+
+ Utility class for temporarily switching implementations.
+
+
+
+
+ The previous .
+
+
+
+
+ Whether this object has already been disposed.
+
+
+
+
+ Initializes a new instance of the class, installing the new .
+
+ The new .
+
+
+
+ Restores the old .
+
+
+
+
+ Provides synchronous extension methods for tasks.
+
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ The result of the task.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The result of the task.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed.
+
+
+
+ Represents the producer side of a unbound to a delegate, providing access to the consumer side through the property.
+
+
+
+
+ The underlying TCS.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified state.
+
+ The state to use as the underlying 's .
+
+
+
+ Initializes a new instance of the class with the specified options.
+
+ The options to use when creating the underlying .
+
+
+
+ Initializes a new instance of the class with the specified state and options.
+
+ The state to use as the underlying 's .
+ The options to use when creating the underlying .
+
+
+
+ Gets the created by this .
+
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ The underlying has already been completed.
+
+
+
+ Transitions the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the target asynchronous operation.
+ The type of the result of the source asynchronous operation.
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ The delegate used to retrieve the result. This is only invoked if indicates successful completion. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a with the specified value, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Attempts to complete a , forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Provides completed task constants.
+
+
+
+
+ A task that has been completed with the value true.
+
+
+
+
+ A task that has been completed with the value false.
+
+
+
+
+ A task that has been completed with the value 0.
+
+
+
+
+ A task that has been completed with the value -1.
+
+
+
+
+ A that has been completed.
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides completed task constants.
+
+ The type of the task result.
+
+
+
+ A task that has been completed with the default value of .
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides extension methods for tasks.
+
+
+
+
+ Creates a new array of tasks which complete in order.
+
+ The type of the results of the tasks.
+ The tasks to order by completion.
+
+
+
+ Provides extension methods for task factories.
+
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ A double-ended queue (deque), which provides O(1) indexed access, O(1) removals from the front and back, amortized O(1) insertions to the front and back, and O(N) insertions and removals anywhere else (with the operations getting slower as the index approaches the middle).
+
+ The type of elements contained in the deque.
+
+
+
+ The default capacity.
+
+
+
+
+ The circular buffer that holds the view.
+
+
+
+
+ The offset into where the view begins.
+
+
+
+
+ Initializes a new instance of the class with the specified capacity.
+
+ The initial capacity. Must be greater than 0.
+
+
+
+ Initializes a new instance of the class with the elements from the specified collection.
+
+ The collection.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a value indicating whether this list is read-only. This implementation always returns false.
+
+ true if this list is read-only; otherwise, false.
+
+
+
+ Gets or sets the item at the specified index.
+
+ The index of the item to get or set.
+ is not a valid index in this list.
+ This property is set and the list is read-only.
+
+
+
+ Inserts an item to this list at the specified index.
+
+ The zero-based index at which should be inserted.
+ The object to insert into this list.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Determines the index of a specific item in this list.
+
+ The object to locate in this list.
+ The index of if found in this list; otherwise, -1.
+
+
+
+ Adds an item to the end of this list.
+
+ The object to add to this list.
+
+ This list is read-only.
+
+
+
+
+ Determines whether this list contains a specific value.
+
+ The object to locate in this list.
+
+ true if is found in this list; otherwise, false.
+
+
+
+
+ Copies the elements of this list to an , starting at a particular index.
+
+ The one-dimensional that is the destination of the elements copied from this slice. The must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+ is null.
+
+
+ is less than 0.
+
+
+ is equal to or greater than the length of .
+ -or-
+ The number of elements in the source is greater than the available space from to the end of the destination .
+
+
+
+
+ Removes the first occurrence of a specific object from this list.
+
+ The object to remove from this list.
+
+ true if was successfully removed from this list; otherwise, false. This method also returns false if is not found in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Checks the argument to see if it refers to a valid insertion point in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Checks the argument to see if it refers to an existing element in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an existing element for the source.
+
+
+
+ Checks the and arguments for validity when applied to a source of a given length. Allows 0-element ranges, including a 0-element range at the end of the source.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into source at which the range begins.
+ The number of elements in the range.
+ Either or is less than 0.
+ The range [offset, offset + count) is not within the range [0, sourceLength).
+
+
+
+ Gets a value indicating whether this instance is empty.
+
+
+
+
+ Gets a value indicating whether this instance is at full capacity.
+
+
+
+
+ Gets a value indicating whether the buffer is "split" (meaning the beginning of the view is at a later index in than the end).
+
+
+
+
+ Gets or sets the capacity for this deque. This value must always be greater than zero, and this property cannot be set to a value less than .
+
+ Capacity cannot be set to a value less than .
+
+
+
+ Gets the number of elements contained in this deque.
+
+ The number of elements contained in this deque.
+
+
+
+ Applies the offset to , resulting in a buffer index.
+
+ The deque index.
+ The buffer index.
+
+
+
+ Gets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element at the specified index.
+
+
+
+ Sets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Inserts an element at the specified view index.
+
+ The zero-based view index at which the element should be inserted. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Removes an element at the specified view index.
+
+ The zero-based view index of the element to remove. This index is guaranteed to be valid.
+
+
+
+ Increments by using modulo- arithmetic.
+
+ The value by which to increase . May not be negative.
+ The value of after it was incremented.
+
+
+
+ Decrements by using modulo- arithmetic.
+
+ The value by which to reduce . May not be negative or greater than .
+ The value of before it was decremented.
+
+
+
+ Inserts a single element to the back of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Inserts a single element to the front of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Removes and returns the last element in the view. must be false when this method is called.
+
+ The former last element.
+
+
+
+ Removes and returns the first element in the view. must be false when this method is called.
+
+ The former first element.
+
+
+
+ Inserts a range of elements into the view.
+
+ The index into the view at which the elements are to be inserted.
+ The elements to insert.
+ The number of elements in . Must be greater than zero, and the sum of and must be less than or equal to .
+
+
+
+ Removes a range of elements from the view.
+
+ The index into the view at which the range begins.
+ The number of elements in the range. This must be greater than 0 and less than or equal to .
+
+
+
+ Doubles the capacity if necessary to make room for one more element. When this method returns, is false.
+
+
+
+
+ Inserts a single element at the back of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a single element at the front of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a collection of elements into this deque.
+
+ The index at which the collection is inserted.
+ The collection of elements to insert.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Removes a range of elements from this deque.
+
+ The index into the deque at which the range begins.
+ The number of elements to remove.
+ Either or is less than 0.
+ The range [, + ) is not within the range [0, ).
+
+
+
+ Removes and returns the last element of this deque.
+
+ The former last element.
+ The deque is empty.
+
+
+
+ Removes and returns the first element of this deque.
+
+ The former first element.
+ The deque is empty.
+
+
+
+ Removes all items from this deque.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/portable-net45+netcore451+wp8+wpa81/Nito.AsyncEx.dll b/packages/Nito.AsyncEx.4.0.1/lib/portable-net45+netcore451+wp8+wpa81/Nito.AsyncEx.dll
new file mode 100644
index 000000000..e414e7a28
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/portable-net45+netcore451+wp8+wpa81/Nito.AsyncEx.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/portable-net45+netcore451+wp8+wpa81/Nito.AsyncEx.xml b/packages/Nito.AsyncEx.4.0.1/lib/portable-net45+netcore451+wp8+wpa81/Nito.AsyncEx.xml
new file mode 100644
index 000000000..d497cca9c
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/portable-net45+netcore451+wp8+wpa81/Nito.AsyncEx.xml
@@ -0,0 +1,3930 @@
+
+
+
+ Nito.AsyncEx
+
+
+
+
+ An async-compatible auto-reset event.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible auto-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous auto-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event. This method may block the calling thread.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately.
+
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately. This method may block the calling thread.
+
+
+
+
+ Sets the event, atomically completing a task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ An async-compatible barrier.
+
+
+
+
+ Mutex used to control access to other fields.
+
+
+
+
+ The TCS used to signal the current phase.
+
+
+
+
+ The current phase.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ The total number of participants.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The asynchronous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ The synchonous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Gets a semi-unique identifier for this asynchronous barrier.
+
+
+
+
+ Gets the current phase of the barrier.
+
+
+
+
+ Gets the number of participants in this barrier.
+
+
+
+
+ Gets the number of participants for this phase that have not yet signalled.
+
+
+
+
+ Starts executing the post-phase action and returns a representing the action.
+
+
+
+
+ Signals completions to this barrier. Returns the task for the current phase, which may already be completed. Returns null if the signal count is greater than the remaining participant count.
+
+ The number of completions to signal.
+ Whether the participants should be removed permanently.
+
+
+
+ Signals the specified number of completions to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+ The cancellation token used to cancel the wait. If this signal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Adds the specified number of participants to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+ The number of participants to add.
+
+
+
+ Adds a participant to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and asynchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and asynchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ An async-compatible condition variable. This type uses Mesa-style semantics (the notifying tasks do not yield).
+
+
+
+
+ The lock associated with this condition variable.
+
+
+
+
+ The queue of waiting tasks.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+
+
+
+ Gets a semi-unique identifier for this asynchronous condition variable.
+
+
+
+
+ Sends a signal to a single task waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Provides a context for asynchronous operations. This class is threadsafe.
+
+
+ may only be called once. After returns, the async context should be disposed.
+
+
+
+
+ The queue holding the actions to run.
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The number of outstanding operations, including actions in the queue.
+
+
+
+
+ Initializes a new instance of the class. This is an advanced operation; most people should use one of the static Run methods instead.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous context. This is the same identifier as the context's .
+
+
+
+
+ Increments the outstanding asynchronous operation count.
+
+
+
+
+ Decrements the outstanding asynchronous operation count.
+
+
+
+
+ Queues a task for execution by . If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The task to queue. May not be null.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Disposes all resources used by this class. This method should NOT be called while is executing.
+
+
+
+
+ Executes all queued actions. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from tasks that are supposed to propagate errors.
+
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task. This method will unwrap and propagate errors from the task.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task proxy.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task proxy. This method will unwrap and propagate errors from the task proxy.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Gets the current for this thread, or null if this thread is not currently running in an .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . Be careful with async delegates; you may need to call and to prevent early termination of this .
+
+
+
+
+ The implementation used by .
+
+
+
+
+ The async context.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context.
+
+
+
+ Gets the async context.
+
+
+
+
+ Dispatches an asynchronous message to the async context. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Dispatches an asynchronous message to the async context, and waits for it to complete.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Responds to the notification that an operation has started by incrementing the outstanding asynchronous operation count.
+
+
+
+
+ Responds to the notification that an operation has completed by decrementing the outstanding asynchronous operation count.
+
+
+
+
+ Creates a copy of the synchronization context.
+
+ A new object.
+
+
+
+ Returns a hash code for this instance.
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+ Determines whether the specified is equal to this instance. It is considered equal if it refers to the same underlying async context as this instance.
+
+ The to compare with this instance.
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+ A blocking queue.
+
+
+
+
+ The underlying blocking collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a blocking enumerable that removes items from the queue. This enumerable only completes after has been called.
+
+ A blocking enumerable that removes items from the queue.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Attempts to add the item to the queue. If the queue has been marked as complete for adding, this method returns false.
+
+ The item to enqueue.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Marks the queue as complete for adding, allowing the enumerator returned from to eventually complete. This method may be called several times.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ A task scheduler which schedules tasks to an async context.
+
+
+
+
+ The async context for this task scheduler.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context for this task scheduler. May not be null.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Queues a to the scheduler. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The to be queued.
+
+
+
+ Determines whether the provided can be executed synchronously in this call, and if it can, executes it.
+
+ The to be executed.
+ A Boolean denoting whether or not task has previously been queued. If this parameter is True, then the task may have been previously queued (scheduled); if False, then the task is known not to have been queued, and this call is being made in order to execute the task inline without queuing it.
+ A Boolean value indicating whether the task was executed inline.
+ The was already executed.
+
+
+
+ Indicates the maximum concurrency level this is able to support.
+
+
+
+
+ Exposes the base method.
+
+ The task to attempt to execute.
+
+
+
+ A thread that executes actions within an .
+
+
+
+
+ The child thread.
+
+
+
+
+ The asynchronous context executed by the child thread.
+
+
+
+
+ A flag used to ensure we only call once during complex join/dispose operations.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands. If is true, then the child thread is an STA thread (throwing if the platform does not support STA threads).
+
+
+
+
+ Gets the executed by this thread.
+
+
+
+
+ Permits the thread to exit, if we have not already done so.
+
+
+
+
+ Requests the thread to exit and returns a task representing the exit of the thread. The thread will exit when all outstanding asynchronous operations complete.
+
+
+
+
+ Requests the thread to exit.
+
+
+
+
+ Gets the for this thread, which can be used to schedule work to this thread.
+
+
+
+
+ An async-compatible countdown event.
+
+
+
+
+ The TCS used to signal this event.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ Creates an async-compatible countdown event.
+
+ The number of signals this event will need before it becomes set. Must be greater than zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous countdown event.
+
+
+
+
+ Gets the current number of remaining signals before this event becomes set.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Attempts to modify the current count by the specified amount. This method returns false if the new current count value would be invalid, or if the count has already reached zero.
+
+ The amount to change the current count. This may be positive or negative, but not zero.
+
+
+
+ Attempts to add the specified value to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Attempts to add the specified value to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Provides asynchronous wrappers.
+
+ The type of the result of the asychronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method. May not be null.
+ The end method. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap. May not be null.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event.
+ The event args.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event. May not be null.
+ The name of the event. May not be null.
+ The event args.
+
+
+
+ Manages the subscription to an event on a target object, triggering a task (and unsubscribing) when the event is raised.
+
+ The type of event arguments passed to the event.
+
+
+
+ The source for our task, which is returned to the user.
+
+
+
+
+ The subscription to the event.
+
+
+
+
+ The object that publishes the event.
+
+
+
+
+ The event to which we subscribe.
+
+
+
+
+ Subscribes to the specified event.
+
+ The object that publishes the event.
+ The event to which we subscribe.
+
+
+
+ Gets the task that is completed when the event is raised.
+
+
+
+
+ Private method that handles event completion. Do not call this method; it is public to avoid security problems when reflecting.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+ The result of the asynchronous operation.
+
+
+
+ Provides asynchronous wrappers.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method.
+ The end method.
+
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Wraps a with a . When the is signalled, the returned is completed. If the handle is already signalled, this method acts synchronously.
+
+ The to observe.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the handle is already signalled or the timeout is zero, this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is (successfully) completed. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled or the cancellation token is already cancelled, this method acts synchronously.
+
+ The to observe.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled, the timeout is zero, or the cancellation token is already cancelled, then this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+
+
+
+
+ Provides support for asynchronous lazy initialization. This type is fully threadsafe.
+
+ The type of object that is being asynchronously initialized.
+
+
+
+ The underlying lazy task.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Initializes a new instance of the class.
+
+ The asynchronous delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lazy instance.
+
+
+
+
+ Whether the asynchronous factory method has started. This is initially false and becomes true when this instance is awaited or after is called.
+
+
+
+
+ Asynchronous infrastructure support. This method permits instances of to be await'ed.
+
+
+
+
+ Starts the asynchronous initialization, if it has not already started.
+
+
+
+
+ A mutual exclusion lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ Whether the lock is taken by a task.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock.
+
+
+
+
+ A task that is completed with the key object for this lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock using the specified wait queue.
+
+ The wait queue used to manage waiters.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+
+
+
+ Releases the lock.
+
+
+
+
+ The disposable which releases the lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ An async-compatible manual-reset event.
+
+
+
+
+ The object used for synchronization.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Creates an async-compatible manual-reset event.
+
+ Whether the manual-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible manual-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous manual-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Sets the event, atomically completing every task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ Resets the event. If the event is already reset, this method does nothing.
+
+
+
+
+ An async-compatible monitor.
+
+
+
+
+ The lock.
+
+
+
+
+ The condition variable.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Gets a semi-unique identifier for this monitor.
+
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Synchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Sends a signal to a single task waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ An async-compatible producer/consumer queue.
+
+ The type of elements contained in the queue.
+
+
+
+ The underlying queue.
+
+
+
+
+ The maximum number of elements allowed in the queue.
+
+
+
+
+ The mutual-exclusion lock protecting the queue.
+
+
+
+
+ A condition variable that is signalled when the queue is not full.
+
+
+
+
+ A condition variable that is signalled when the queue is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the queue is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements and a maximum element count.
+
+ The initial elements to place in the queue.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements.
+
+ The initial elements to place in the queue.
+
+
+
+ Creates a new async-compatible producer/consumer queue with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue.
+
+
+
+
+ Whether the queue is empty.
+
+
+
+
+ Whether the queue is full.
+
+
+
+
+ Releases resources held by this instance. After disposal, any use of this instance is undefined.
+
+
+
+
+ Asynchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Attempts to enqueue an item.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related enqueue operations. May be null if this is the only enqueue operation.
+
+
+
+ Attempts to enqueue an item. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. This method may block the calling thread. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item.
+
+ A cancellation token that can be used to abort the dequeue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related dequeue operations. May be null if this is the only dequeue operation.
+
+
+
+ Attempts to dequeue an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ The result of a TryDequeue, DequeueFromAny, or TryDequeueFromAny operation.
+
+
+
+
+ The queue from which the item was dequeued, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The dequeued item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ A reader/writer lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as writers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as upgradeable readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to upgrade a reader lock to a writer lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The current upgradeable reader lock key, if any. If this is not null, then there is an upgradeable reader lock held.
+
+
+
+
+ Number of reader locks held (including an upgradeable reader lock, if applicable); -1 if a writer lock is held; 0 if no locks are held.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ A task that is completed with the reader key object for this lock.
+
+
+
+
+ A task that is completed with the writer key object for this lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Applies a continuation to the task that will call if the task is canceled. This method may not be called while holding the sync lock.
+
+ The task to observe for cancellation.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously upgrades a reader lock to a writer lock. This method assumes the sync lock is already held.
+
+
+
+
+ Downgrades a writer lock to a reader lock. This method assumes the sync lock is already held.
+
+
+
+
+ Grants lock(s) to waiting tasks. This method assumes the sync lock is already held.
+
+
+
+
+ Releases the lock as a reader.
+
+
+
+
+ Releases the lock as a writer.
+
+
+
+
+ Releases the lock as an upgradeable reader.
+
+
+
+
+ The disposable which releases the reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which releases the writer lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which manages the upgradeable reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ The task doing the upgrade.
+
+
+
+
+ A task that is completed with the upgrade key object for this key.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Gets a value indicating whether this lock has been upgraded to a write lock.
+
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+
+
+
+ Downgrades the writer lock to a reader lock.
+
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which downgrades an upgradeable reader key.
+
+
+
+
+ The upgradeable reader key to downgrade.
+
+
+
+
+ Creates the upgrade key for an upgradeable reader key.
+
+ The upgradeable reader key to downgrade. May not be null.
+
+
+
+ Downgrade the upgradeable reader key.
+
+
+
+
+ An async-compatible semaphore. Alternatively, you could use SemaphoreSlim on .NET 4.5 / Windows Store.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the semaphore.
+
+
+
+
+ The number of waits that will be immediately granted.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+ The wait queue used to manage waiters.
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous semaphore.
+
+
+
+
+ Gets the number of slots currently available on this semaphore.
+
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ A collection of cancelable instances. Implementations must be threadsafe and must work correctly if the caller is holding a lock.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ Gets whether the queue is empty.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. The returned task must support both synchronous and asynchronous waits.
+
+ The queued task.
+
+
+
+ Removes a single entry in the wait queue. Returns a disposable that completes that entry.
+
+ The result used to complete the wait queue entry. If this isn't needed, use default(T).
+
+
+
+ Removes all entries in the wait queue. Returns a disposable that completes all entries.
+
+ The result used to complete the wait queue entries. If this isn't needed, use default(T).
+
+
+
+ Attempts to remove an entry from the wait queue. Returns a disposable that cancels the entry.
+
+ The task to cancel.
+ A value indicating whether the entry was found and canceled.
+
+
+
+ Removes all entries from the wait queue. Returns a disposable that cancels all entries.
+
+
+
+
+ Provides extension methods for wait queues.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ A synchronization object taken while cancelling the entry.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ The default wait queue implementation, which uses a double-ended queue.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ An awaitable wrapper around a task whose result is disposable. The wrapper is not disposable, so this prevents usage errors like "using (MyAsync())" when the appropriate usage should be "using (await MyAsync())".
+
+ The type of the result of the underlying task.
+
+
+
+ The underlying task.
+
+
+
+
+ Initializes a new awaitable wrapper around the specified task.
+
+ The underlying task to wrap.
+
+
+
+ Returns the underlying task.
+
+
+
+
+ Implicit conversion to the underlying task.
+
+ The awaitable wrapper.
+
+
+
+ Infrastructure. Returns the task awaiter for the underlying task.
+
+
+
+
+ Infrastructure. Returns a configured task awaiter for the underlying task.
+
+ Whether to attempt to marshal the continuation back to the captured context.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Returns a that is canceled when this is canceled. This method will leak resources if the cancellation token is long-lived; use for a similar approach with proper resource management.
+
+ The to monitor.
+ A that is canceled when this is canceled.
+
+
+
+ Returns a which holds the task for this cancellation token.
+
+ The cancellation token to observe.
+
+
+
+ Holds the task for a cancellation token, as well as the token registration. The registration is disposed when this instance is disposed.
+
+
+
+
+ The cancellation token registration, if any. This is null if the registration was not necessary.
+
+
+
+
+ Creates a task for the specified cancellation token, registering with the token if necessary.
+
+ The cancellation token to observe.
+
+
+
+ Gets the task for the source cancellation token.
+
+
+
+
+ Disposes the cancellation token registration, if any. Note that this may cause to never complete.
+
+
+
+
+ Helper methods for cancellation tokens.
+
+
+
+
+ Initializes the static members.
+
+
+
+
+ Gets , a cancellation token that is never canceled.
+
+
+
+
+ Gets a cancellation token that is already canceled.
+
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+ The options to use for the task continuation.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+
+
+
+ Manages the deferrals for a "command" event that may have asynchonous handlers.
+
+
+
+
+ The countdown event, triggered when all deferrals have completed. This is null if there are no deferrals.
+
+
+
+
+ Gets a deferral. The deferral is complete when disposed.
+
+ The deferral.
+
+
+
+ Notifies the manager that all deferrals have been requested, and returns a task that is completed when all deferrals have completed.
+
+ A task that is completed when all deferrals have completed.
+
+
+
+ A deferral.
+
+
+
+
+ The countdown event of the deferral manager.
+
+
+
+
+ Creates a new deferral referencing the countdown event of the deferral manager.
+
+ The countdown event of the deferral manager.
+
+
+
+ Completes the deferral.
+
+
+
+
+ Provides helper (non-extension) methods dealing with exceptions.
+
+
+
+
+ Attempts to prepare the exception for re-throwing by preserving the stack trace. The returned exception should be immediately thrown.
+
+ The exception. May not be null.
+ The that was passed into this method.
+
+
+
+ Allocates Ids for instances on demand. 0 is an invalid/unassigned Id. Ids may be non-unique in very long-running systems. This is similar to the Id system used by and .
+
+ The type for which ids are generated.
+
+
+
+ The last id generated for this type. This is 0 if no ids have been generated.
+
+
+
+
+ Returns the id, allocating it if necessary.
+
+ A reference to the field containing the id.
+
+
+
+ A that may or may not also reference its own . Instances of this type should always be disposed.
+
+
+
+
+ The , if any. If this is not null, then is _cts.Token.
+
+
+
+
+ The . If is not null, then this is _cts.Token.
+
+
+
+
+ Creates a normalized cancellation token that can never be canceled.
+
+
+
+
+ Creates a normalized cancellation token from a . is set to the property of .
+
+ The source for this token.
+
+
+
+ Creates a normalized cancellation token from a . is set to .
+
+ The source for this token.
+
+
+
+ Releases any resources used by this normalized cancellation token.
+
+
+
+
+ Gets the for this normalized cancellation token.
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets a task that completes successfully when completes (successfully, faulted, or canceled). This property never changes and is never null.
+
+
+
+
+ Gets the current task status. This property raises a notification when the task completes.
+
+
+
+
+ Gets whether the task has completed. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task is busy (not completed). This property raises a notification when the value changes to false.
+
+
+
+
+ Gets whether the task has completed successfully. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task has been canceled. This property raises a notification only if the task is canceled (i.e., if the value changes to true).
+
+
+
+
+ Gets whether the task has faulted. This property raises a notification only if the task faults (i.e., if the value changes to true).
+
+
+
+
+ Gets the wrapped faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the error message for the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets the result of the task. Returns the default value of if the task has not completed successfully. This property raises a notification when the task completes successfully.
+
+
+
+
+ Factory for task completion notifiers.
+
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The type of the task result.
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ The source (controller) of a "pause token", which can be used to cooperatively pause and unpause operations.
+
+
+
+
+ The MRE that manages the "pause" logic. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether or not this source (and its tokens) are in the paused state.
+
+
+
+
+ Gets a pause token controlled by this source.
+
+
+
+
+ A type that allows an operation to be cooperatively paused.
+
+
+
+
+ The MRE that manages the "pause" logic, or null if this token can never be paused. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether this token can ever possibly be paused.
+
+
+
+
+ Whether or not this token is in the paused state.
+
+
+
+
+ Asynchronously waits until the pause token is not paused.
+
+
+
+
+ Asynchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ Synchronously waits until the pause token is not paused.
+
+
+
+
+ Synchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ A progress implementation that stores progress updates in a property. If this instance is created on a UI thread, its property is suitable for data binding.
+
+ The type of progress value.
+
+
+
+ The context of the thread that created this instance.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The initial progress value.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Occurs when the property value changes.
+
+
+
+
+ Provides helper types for .
+
+
+
+
+ Retrieves the current synchronization context, or the default synchronization context if there is no current synchronization context.
+
+
+
+
+ Utility class for temporarily switching implementations.
+
+
+
+
+ The previous .
+
+
+
+
+ Whether this object has already been disposed.
+
+
+
+
+ Initializes a new instance of the class, installing the new .
+
+ The new .
+
+
+
+ Restores the old .
+
+
+
+
+ Provides synchronous extension methods for tasks.
+
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ The result of the task.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The result of the task.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed.
+
+
+
+ Represents the producer side of a unbound to a delegate, providing access to the consumer side through the property.
+
+
+
+
+ The underlying TCS.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified state.
+
+ The state to use as the underlying 's .
+
+
+
+ Initializes a new instance of the class with the specified options.
+
+ The options to use when creating the underlying .
+
+
+
+ Initializes a new instance of the class with the specified state and options.
+
+ The state to use as the underlying 's .
+ The options to use when creating the underlying .
+
+
+
+ Gets the created by this .
+
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ The underlying has already been completed.
+
+
+
+ Transitions the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the target asynchronous operation.
+ The type of the result of the source asynchronous operation.
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ The delegate used to retrieve the result. This is only invoked if indicates successful completion. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a with the specified value, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Attempts to complete a , forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Provides completed task constants.
+
+
+
+
+ A task that has been completed with the value true.
+
+
+
+
+ A task that has been completed with the value false.
+
+
+
+
+ A task that has been completed with the value 0.
+
+
+
+
+ A task that has been completed with the value -1.
+
+
+
+
+ A that has been completed.
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides completed task constants.
+
+ The type of the task result.
+
+
+
+ A task that has been completed with the default value of .
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides extension methods for tasks.
+
+
+
+
+ Creates a new array of tasks which complete in order.
+
+ The type of the results of the tasks.
+ The tasks to order by completion.
+
+
+
+ Provides extension methods for task factories.
+
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ A double-ended queue (deque), which provides O(1) indexed access, O(1) removals from the front and back, amortized O(1) insertions to the front and back, and O(N) insertions and removals anywhere else (with the operations getting slower as the index approaches the middle).
+
+ The type of elements contained in the deque.
+
+
+
+ The default capacity.
+
+
+
+
+ The circular buffer that holds the view.
+
+
+
+
+ The offset into where the view begins.
+
+
+
+
+ Initializes a new instance of the class with the specified capacity.
+
+ The initial capacity. Must be greater than 0.
+
+
+
+ Initializes a new instance of the class with the elements from the specified collection.
+
+ The collection.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a value indicating whether this list is read-only. This implementation always returns false.
+
+ true if this list is read-only; otherwise, false.
+
+
+
+ Gets or sets the item at the specified index.
+
+ The index of the item to get or set.
+ is not a valid index in this list.
+ This property is set and the list is read-only.
+
+
+
+ Inserts an item to this list at the specified index.
+
+ The zero-based index at which should be inserted.
+ The object to insert into this list.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Determines the index of a specific item in this list.
+
+ The object to locate in this list.
+ The index of if found in this list; otherwise, -1.
+
+
+
+ Adds an item to the end of this list.
+
+ The object to add to this list.
+
+ This list is read-only.
+
+
+
+
+ Determines whether this list contains a specific value.
+
+ The object to locate in this list.
+
+ true if is found in this list; otherwise, false.
+
+
+
+
+ Copies the elements of this list to an , starting at a particular index.
+
+ The one-dimensional that is the destination of the elements copied from this slice. The must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+ is null.
+
+
+ is less than 0.
+
+
+ is equal to or greater than the length of .
+ -or-
+ The number of elements in the source is greater than the available space from to the end of the destination .
+
+
+
+
+ Removes the first occurrence of a specific object from this list.
+
+ The object to remove from this list.
+
+ true if was successfully removed from this list; otherwise, false. This method also returns false if is not found in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Checks the argument to see if it refers to a valid insertion point in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Checks the argument to see if it refers to an existing element in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an existing element for the source.
+
+
+
+ Checks the and arguments for validity when applied to a source of a given length. Allows 0-element ranges, including a 0-element range at the end of the source.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into source at which the range begins.
+ The number of elements in the range.
+ Either or is less than 0.
+ The range [offset, offset + count) is not within the range [0, sourceLength).
+
+
+
+ Gets a value indicating whether this instance is empty.
+
+
+
+
+ Gets a value indicating whether this instance is at full capacity.
+
+
+
+
+ Gets a value indicating whether the buffer is "split" (meaning the beginning of the view is at a later index in than the end).
+
+
+
+
+ Gets or sets the capacity for this deque. This value must always be greater than zero, and this property cannot be set to a value less than .
+
+ Capacity cannot be set to a value less than .
+
+
+
+ Gets the number of elements contained in this deque.
+
+ The number of elements contained in this deque.
+
+
+
+ Applies the offset to , resulting in a buffer index.
+
+ The deque index.
+ The buffer index.
+
+
+
+ Gets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element at the specified index.
+
+
+
+ Sets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Inserts an element at the specified view index.
+
+ The zero-based view index at which the element should be inserted. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Removes an element at the specified view index.
+
+ The zero-based view index of the element to remove. This index is guaranteed to be valid.
+
+
+
+ Increments by using modulo- arithmetic.
+
+ The value by which to increase . May not be negative.
+ The value of after it was incremented.
+
+
+
+ Decrements by using modulo- arithmetic.
+
+ The value by which to reduce . May not be negative or greater than .
+ The value of before it was decremented.
+
+
+
+ Inserts a single element to the back of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Inserts a single element to the front of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Removes and returns the last element in the view. must be false when this method is called.
+
+ The former last element.
+
+
+
+ Removes and returns the first element in the view. must be false when this method is called.
+
+ The former first element.
+
+
+
+ Inserts a range of elements into the view.
+
+ The index into the view at which the elements are to be inserted.
+ The elements to insert.
+ The number of elements in . Must be greater than zero, and the sum of and must be less than or equal to .
+
+
+
+ Removes a range of elements from the view.
+
+ The index into the view at which the range begins.
+ The number of elements in the range. This must be greater than 0 and less than or equal to .
+
+
+
+ Doubles the capacity if necessary to make room for one more element. When this method returns, is false.
+
+
+
+
+ Inserts a single element at the back of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a single element at the front of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a collection of elements into this deque.
+
+ The index at which the collection is inserted.
+ The collection of elements to insert.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Removes a range of elements from this deque.
+
+ The index into the deque at which the range begins.
+ The number of elements to remove.
+ Either or is less than 0.
+ The range [, + ) is not within the range [0, ).
+
+
+
+ Removes and returns the last element of this deque.
+
+ The former last element.
+ The deque is empty.
+
+
+
+ Removes and returns the first element of this deque.
+
+ The former first element.
+ The deque is empty.
+
+
+
+ Removes all items from this deque.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/portable-net45+netcore451+wpa81/Nito.AsyncEx.Concurrent.dll b/packages/Nito.AsyncEx.4.0.1/lib/portable-net45+netcore451+wpa81/Nito.AsyncEx.Concurrent.dll
new file mode 100644
index 000000000..8f91a729a
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/portable-net45+netcore451+wpa81/Nito.AsyncEx.Concurrent.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/portable-net45+netcore451+wpa81/Nito.AsyncEx.Concurrent.xml b/packages/Nito.AsyncEx.4.0.1/lib/portable-net45+netcore451+wpa81/Nito.AsyncEx.Concurrent.xml
new file mode 100644
index 000000000..497b59a89
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/portable-net45+netcore451+wpa81/Nito.AsyncEx.Concurrent.xml
@@ -0,0 +1,401 @@
+
+
+
+ Nito.AsyncEx.Concurrent
+
+
+
+
+ An async-compatible producer/consumer collection.
+
+ The type of elements contained in the collection.
+
+
+
+ The underlying collection.
+
+
+
+
+ The maximum number of elements allowed in the collection.
+
+
+
+
+ The mutual-exclusion lock protecting the collection.
+
+
+
+
+ A condition variable that is signalled when the collection is not full.
+
+
+
+
+ A condition variable that is signalled when the collection is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the collection is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer collection wrapping the specified collection and with a maximum element count.
+
+ The collection to wrap.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer collection wrapping the specified collection.
+
+ The collection to wrap.
+
+
+
+ Creates a new async-compatible producer/consumer collection with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer collection.
+
+
+
+
+ Whether the collection is empty.
+
+
+
+
+ Whether the collection is full.
+
+
+
+
+ Asynchronously marks the producer/consumer collection as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer collection as complete for adding.
+
+
+
+
+ Attempts to add an item.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related add operations. May be null if this is the only add operation.
+
+
+
+ Attempts to add an item. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer collection has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer collection has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer collection.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to take an item.
+
+ A cancellation token that can be used to abort the take operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related take operations. May be null if this is the only take operation.
+
+
+
+ Attempts to take an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection.
+
+
+
+
+ Attempts to take an item from the producer/consumer collection. This method may block the calling thread.
+
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed.
+
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed. This method may block the calling thread.
+
+
+
+
+ The result of a TryTake, TakeFromAny, or TryTakeFromAny operation.
+
+
+
+
+ The collection from which the item was taken, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The producer/consumer collections.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The producer/consumer collections.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The array of producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The array of producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The array of producer/consumer collections.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The array of producer/consumer collections.
+
+
+
+ A progress implementation that sends progress reports to a producer/consumer collection.
+
+ The type of progress value.
+
+
+
+ The producer/consumer collection that receives progress reports.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The producer/consumer collection that receives progress reports.
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/portable-net45+netcore451+wpa81/Nito.AsyncEx.dll b/packages/Nito.AsyncEx.4.0.1/lib/portable-net45+netcore451+wpa81/Nito.AsyncEx.dll
new file mode 100644
index 000000000..e414e7a28
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/portable-net45+netcore451+wpa81/Nito.AsyncEx.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/portable-net45+netcore451+wpa81/Nito.AsyncEx.xml b/packages/Nito.AsyncEx.4.0.1/lib/portable-net45+netcore451+wpa81/Nito.AsyncEx.xml
new file mode 100644
index 000000000..d497cca9c
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/portable-net45+netcore451+wpa81/Nito.AsyncEx.xml
@@ -0,0 +1,3930 @@
+
+
+
+ Nito.AsyncEx
+
+
+
+
+ An async-compatible auto-reset event.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible auto-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous auto-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event. This method may block the calling thread.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately.
+
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately. This method may block the calling thread.
+
+
+
+
+ Sets the event, atomically completing a task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ An async-compatible barrier.
+
+
+
+
+ Mutex used to control access to other fields.
+
+
+
+
+ The TCS used to signal the current phase.
+
+
+
+
+ The current phase.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ The total number of participants.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The asynchronous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ The synchonous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Gets a semi-unique identifier for this asynchronous barrier.
+
+
+
+
+ Gets the current phase of the barrier.
+
+
+
+
+ Gets the number of participants in this barrier.
+
+
+
+
+ Gets the number of participants for this phase that have not yet signalled.
+
+
+
+
+ Starts executing the post-phase action and returns a representing the action.
+
+
+
+
+ Signals completions to this barrier. Returns the task for the current phase, which may already be completed. Returns null if the signal count is greater than the remaining participant count.
+
+ The number of completions to signal.
+ Whether the participants should be removed permanently.
+
+
+
+ Signals the specified number of completions to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+ The cancellation token used to cancel the wait. If this signal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Adds the specified number of participants to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+ The number of participants to add.
+
+
+
+ Adds a participant to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and asynchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and asynchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ An async-compatible condition variable. This type uses Mesa-style semantics (the notifying tasks do not yield).
+
+
+
+
+ The lock associated with this condition variable.
+
+
+
+
+ The queue of waiting tasks.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+
+
+
+ Gets a semi-unique identifier for this asynchronous condition variable.
+
+
+
+
+ Sends a signal to a single task waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Provides a context for asynchronous operations. This class is threadsafe.
+
+
+ may only be called once. After returns, the async context should be disposed.
+
+
+
+
+ The queue holding the actions to run.
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The number of outstanding operations, including actions in the queue.
+
+
+
+
+ Initializes a new instance of the class. This is an advanced operation; most people should use one of the static Run methods instead.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous context. This is the same identifier as the context's .
+
+
+
+
+ Increments the outstanding asynchronous operation count.
+
+
+
+
+ Decrements the outstanding asynchronous operation count.
+
+
+
+
+ Queues a task for execution by . If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The task to queue. May not be null.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Disposes all resources used by this class. This method should NOT be called while is executing.
+
+
+
+
+ Executes all queued actions. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from tasks that are supposed to propagate errors.
+
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task. This method will unwrap and propagate errors from the task.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task proxy.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task proxy. This method will unwrap and propagate errors from the task proxy.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Gets the current for this thread, or null if this thread is not currently running in an .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . Be careful with async delegates; you may need to call and to prevent early termination of this .
+
+
+
+
+ The implementation used by .
+
+
+
+
+ The async context.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context.
+
+
+
+ Gets the async context.
+
+
+
+
+ Dispatches an asynchronous message to the async context. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Dispatches an asynchronous message to the async context, and waits for it to complete.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Responds to the notification that an operation has started by incrementing the outstanding asynchronous operation count.
+
+
+
+
+ Responds to the notification that an operation has completed by decrementing the outstanding asynchronous operation count.
+
+
+
+
+ Creates a copy of the synchronization context.
+
+ A new object.
+
+
+
+ Returns a hash code for this instance.
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+ Determines whether the specified is equal to this instance. It is considered equal if it refers to the same underlying async context as this instance.
+
+ The to compare with this instance.
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+ A blocking queue.
+
+
+
+
+ The underlying blocking collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a blocking enumerable that removes items from the queue. This enumerable only completes after has been called.
+
+ A blocking enumerable that removes items from the queue.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Attempts to add the item to the queue. If the queue has been marked as complete for adding, this method returns false.
+
+ The item to enqueue.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Marks the queue as complete for adding, allowing the enumerator returned from to eventually complete. This method may be called several times.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ A task scheduler which schedules tasks to an async context.
+
+
+
+
+ The async context for this task scheduler.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context for this task scheduler. May not be null.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Queues a to the scheduler. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The to be queued.
+
+
+
+ Determines whether the provided can be executed synchronously in this call, and if it can, executes it.
+
+ The to be executed.
+ A Boolean denoting whether or not task has previously been queued. If this parameter is True, then the task may have been previously queued (scheduled); if False, then the task is known not to have been queued, and this call is being made in order to execute the task inline without queuing it.
+ A Boolean value indicating whether the task was executed inline.
+ The was already executed.
+
+
+
+ Indicates the maximum concurrency level this is able to support.
+
+
+
+
+ Exposes the base method.
+
+ The task to attempt to execute.
+
+
+
+ A thread that executes actions within an .
+
+
+
+
+ The child thread.
+
+
+
+
+ The asynchronous context executed by the child thread.
+
+
+
+
+ A flag used to ensure we only call once during complex join/dispose operations.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands. If is true, then the child thread is an STA thread (throwing if the platform does not support STA threads).
+
+
+
+
+ Gets the executed by this thread.
+
+
+
+
+ Permits the thread to exit, if we have not already done so.
+
+
+
+
+ Requests the thread to exit and returns a task representing the exit of the thread. The thread will exit when all outstanding asynchronous operations complete.
+
+
+
+
+ Requests the thread to exit.
+
+
+
+
+ Gets the for this thread, which can be used to schedule work to this thread.
+
+
+
+
+ An async-compatible countdown event.
+
+
+
+
+ The TCS used to signal this event.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ Creates an async-compatible countdown event.
+
+ The number of signals this event will need before it becomes set. Must be greater than zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous countdown event.
+
+
+
+
+ Gets the current number of remaining signals before this event becomes set.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Attempts to modify the current count by the specified amount. This method returns false if the new current count value would be invalid, or if the count has already reached zero.
+
+ The amount to change the current count. This may be positive or negative, but not zero.
+
+
+
+ Attempts to add the specified value to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Attempts to add the specified value to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Provides asynchronous wrappers.
+
+ The type of the result of the asychronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method. May not be null.
+ The end method. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap. May not be null.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event.
+ The event args.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event. May not be null.
+ The name of the event. May not be null.
+ The event args.
+
+
+
+ Manages the subscription to an event on a target object, triggering a task (and unsubscribing) when the event is raised.
+
+ The type of event arguments passed to the event.
+
+
+
+ The source for our task, which is returned to the user.
+
+
+
+
+ The subscription to the event.
+
+
+
+
+ The object that publishes the event.
+
+
+
+
+ The event to which we subscribe.
+
+
+
+
+ Subscribes to the specified event.
+
+ The object that publishes the event.
+ The event to which we subscribe.
+
+
+
+ Gets the task that is completed when the event is raised.
+
+
+
+
+ Private method that handles event completion. Do not call this method; it is public to avoid security problems when reflecting.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+ The result of the asynchronous operation.
+
+
+
+ Provides asynchronous wrappers.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method.
+ The end method.
+
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Wraps a with a . When the is signalled, the returned is completed. If the handle is already signalled, this method acts synchronously.
+
+ The to observe.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the handle is already signalled or the timeout is zero, this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is (successfully) completed. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled or the cancellation token is already cancelled, this method acts synchronously.
+
+ The to observe.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled, the timeout is zero, or the cancellation token is already cancelled, then this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+
+
+
+
+ Provides support for asynchronous lazy initialization. This type is fully threadsafe.
+
+ The type of object that is being asynchronously initialized.
+
+
+
+ The underlying lazy task.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Initializes a new instance of the class.
+
+ The asynchronous delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lazy instance.
+
+
+
+
+ Whether the asynchronous factory method has started. This is initially false and becomes true when this instance is awaited or after is called.
+
+
+
+
+ Asynchronous infrastructure support. This method permits instances of to be await'ed.
+
+
+
+
+ Starts the asynchronous initialization, if it has not already started.
+
+
+
+
+ A mutual exclusion lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ Whether the lock is taken by a task.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock.
+
+
+
+
+ A task that is completed with the key object for this lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock using the specified wait queue.
+
+ The wait queue used to manage waiters.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+
+
+
+ Releases the lock.
+
+
+
+
+ The disposable which releases the lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ An async-compatible manual-reset event.
+
+
+
+
+ The object used for synchronization.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Creates an async-compatible manual-reset event.
+
+ Whether the manual-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible manual-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous manual-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Sets the event, atomically completing every task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ Resets the event. If the event is already reset, this method does nothing.
+
+
+
+
+ An async-compatible monitor.
+
+
+
+
+ The lock.
+
+
+
+
+ The condition variable.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Gets a semi-unique identifier for this monitor.
+
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Synchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Sends a signal to a single task waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ An async-compatible producer/consumer queue.
+
+ The type of elements contained in the queue.
+
+
+
+ The underlying queue.
+
+
+
+
+ The maximum number of elements allowed in the queue.
+
+
+
+
+ The mutual-exclusion lock protecting the queue.
+
+
+
+
+ A condition variable that is signalled when the queue is not full.
+
+
+
+
+ A condition variable that is signalled when the queue is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the queue is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements and a maximum element count.
+
+ The initial elements to place in the queue.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements.
+
+ The initial elements to place in the queue.
+
+
+
+ Creates a new async-compatible producer/consumer queue with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue.
+
+
+
+
+ Whether the queue is empty.
+
+
+
+
+ Whether the queue is full.
+
+
+
+
+ Releases resources held by this instance. After disposal, any use of this instance is undefined.
+
+
+
+
+ Asynchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Attempts to enqueue an item.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related enqueue operations. May be null if this is the only enqueue operation.
+
+
+
+ Attempts to enqueue an item. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. This method may block the calling thread. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item.
+
+ A cancellation token that can be used to abort the dequeue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related dequeue operations. May be null if this is the only dequeue operation.
+
+
+
+ Attempts to dequeue an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ The result of a TryDequeue, DequeueFromAny, or TryDequeueFromAny operation.
+
+
+
+
+ The queue from which the item was dequeued, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The dequeued item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ A reader/writer lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as writers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as upgradeable readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to upgrade a reader lock to a writer lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The current upgradeable reader lock key, if any. If this is not null, then there is an upgradeable reader lock held.
+
+
+
+
+ Number of reader locks held (including an upgradeable reader lock, if applicable); -1 if a writer lock is held; 0 if no locks are held.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ A task that is completed with the reader key object for this lock.
+
+
+
+
+ A task that is completed with the writer key object for this lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Applies a continuation to the task that will call if the task is canceled. This method may not be called while holding the sync lock.
+
+ The task to observe for cancellation.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously upgrades a reader lock to a writer lock. This method assumes the sync lock is already held.
+
+
+
+
+ Downgrades a writer lock to a reader lock. This method assumes the sync lock is already held.
+
+
+
+
+ Grants lock(s) to waiting tasks. This method assumes the sync lock is already held.
+
+
+
+
+ Releases the lock as a reader.
+
+
+
+
+ Releases the lock as a writer.
+
+
+
+
+ Releases the lock as an upgradeable reader.
+
+
+
+
+ The disposable which releases the reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which releases the writer lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which manages the upgradeable reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ The task doing the upgrade.
+
+
+
+
+ A task that is completed with the upgrade key object for this key.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Gets a value indicating whether this lock has been upgraded to a write lock.
+
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+
+
+
+ Downgrades the writer lock to a reader lock.
+
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which downgrades an upgradeable reader key.
+
+
+
+
+ The upgradeable reader key to downgrade.
+
+
+
+
+ Creates the upgrade key for an upgradeable reader key.
+
+ The upgradeable reader key to downgrade. May not be null.
+
+
+
+ Downgrade the upgradeable reader key.
+
+
+
+
+ An async-compatible semaphore. Alternatively, you could use SemaphoreSlim on .NET 4.5 / Windows Store.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the semaphore.
+
+
+
+
+ The number of waits that will be immediately granted.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+ The wait queue used to manage waiters.
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous semaphore.
+
+
+
+
+ Gets the number of slots currently available on this semaphore.
+
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ A collection of cancelable instances. Implementations must be threadsafe and must work correctly if the caller is holding a lock.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ Gets whether the queue is empty.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. The returned task must support both synchronous and asynchronous waits.
+
+ The queued task.
+
+
+
+ Removes a single entry in the wait queue. Returns a disposable that completes that entry.
+
+ The result used to complete the wait queue entry. If this isn't needed, use default(T).
+
+
+
+ Removes all entries in the wait queue. Returns a disposable that completes all entries.
+
+ The result used to complete the wait queue entries. If this isn't needed, use default(T).
+
+
+
+ Attempts to remove an entry from the wait queue. Returns a disposable that cancels the entry.
+
+ The task to cancel.
+ A value indicating whether the entry was found and canceled.
+
+
+
+ Removes all entries from the wait queue. Returns a disposable that cancels all entries.
+
+
+
+
+ Provides extension methods for wait queues.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ A synchronization object taken while cancelling the entry.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ The default wait queue implementation, which uses a double-ended queue.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ An awaitable wrapper around a task whose result is disposable. The wrapper is not disposable, so this prevents usage errors like "using (MyAsync())" when the appropriate usage should be "using (await MyAsync())".
+
+ The type of the result of the underlying task.
+
+
+
+ The underlying task.
+
+
+
+
+ Initializes a new awaitable wrapper around the specified task.
+
+ The underlying task to wrap.
+
+
+
+ Returns the underlying task.
+
+
+
+
+ Implicit conversion to the underlying task.
+
+ The awaitable wrapper.
+
+
+
+ Infrastructure. Returns the task awaiter for the underlying task.
+
+
+
+
+ Infrastructure. Returns a configured task awaiter for the underlying task.
+
+ Whether to attempt to marshal the continuation back to the captured context.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Returns a that is canceled when this is canceled. This method will leak resources if the cancellation token is long-lived; use for a similar approach with proper resource management.
+
+ The to monitor.
+ A that is canceled when this is canceled.
+
+
+
+ Returns a which holds the task for this cancellation token.
+
+ The cancellation token to observe.
+
+
+
+ Holds the task for a cancellation token, as well as the token registration. The registration is disposed when this instance is disposed.
+
+
+
+
+ The cancellation token registration, if any. This is null if the registration was not necessary.
+
+
+
+
+ Creates a task for the specified cancellation token, registering with the token if necessary.
+
+ The cancellation token to observe.
+
+
+
+ Gets the task for the source cancellation token.
+
+
+
+
+ Disposes the cancellation token registration, if any. Note that this may cause to never complete.
+
+
+
+
+ Helper methods for cancellation tokens.
+
+
+
+
+ Initializes the static members.
+
+
+
+
+ Gets , a cancellation token that is never canceled.
+
+
+
+
+ Gets a cancellation token that is already canceled.
+
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+ The options to use for the task continuation.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+
+
+
+ Manages the deferrals for a "command" event that may have asynchonous handlers.
+
+
+
+
+ The countdown event, triggered when all deferrals have completed. This is null if there are no deferrals.
+
+
+
+
+ Gets a deferral. The deferral is complete when disposed.
+
+ The deferral.
+
+
+
+ Notifies the manager that all deferrals have been requested, and returns a task that is completed when all deferrals have completed.
+
+ A task that is completed when all deferrals have completed.
+
+
+
+ A deferral.
+
+
+
+
+ The countdown event of the deferral manager.
+
+
+
+
+ Creates a new deferral referencing the countdown event of the deferral manager.
+
+ The countdown event of the deferral manager.
+
+
+
+ Completes the deferral.
+
+
+
+
+ Provides helper (non-extension) methods dealing with exceptions.
+
+
+
+
+ Attempts to prepare the exception for re-throwing by preserving the stack trace. The returned exception should be immediately thrown.
+
+ The exception. May not be null.
+ The that was passed into this method.
+
+
+
+ Allocates Ids for instances on demand. 0 is an invalid/unassigned Id. Ids may be non-unique in very long-running systems. This is similar to the Id system used by and .
+
+ The type for which ids are generated.
+
+
+
+ The last id generated for this type. This is 0 if no ids have been generated.
+
+
+
+
+ Returns the id, allocating it if necessary.
+
+ A reference to the field containing the id.
+
+
+
+ A that may or may not also reference its own . Instances of this type should always be disposed.
+
+
+
+
+ The , if any. If this is not null, then is _cts.Token.
+
+
+
+
+ The . If is not null, then this is _cts.Token.
+
+
+
+
+ Creates a normalized cancellation token that can never be canceled.
+
+
+
+
+ Creates a normalized cancellation token from a . is set to the property of .
+
+ The source for this token.
+
+
+
+ Creates a normalized cancellation token from a . is set to .
+
+ The source for this token.
+
+
+
+ Releases any resources used by this normalized cancellation token.
+
+
+
+
+ Gets the for this normalized cancellation token.
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets a task that completes successfully when completes (successfully, faulted, or canceled). This property never changes and is never null.
+
+
+
+
+ Gets the current task status. This property raises a notification when the task completes.
+
+
+
+
+ Gets whether the task has completed. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task is busy (not completed). This property raises a notification when the value changes to false.
+
+
+
+
+ Gets whether the task has completed successfully. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task has been canceled. This property raises a notification only if the task is canceled (i.e., if the value changes to true).
+
+
+
+
+ Gets whether the task has faulted. This property raises a notification only if the task faults (i.e., if the value changes to true).
+
+
+
+
+ Gets the wrapped faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the error message for the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets the result of the task. Returns the default value of if the task has not completed successfully. This property raises a notification when the task completes successfully.
+
+
+
+
+ Factory for task completion notifiers.
+
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The type of the task result.
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ The source (controller) of a "pause token", which can be used to cooperatively pause and unpause operations.
+
+
+
+
+ The MRE that manages the "pause" logic. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether or not this source (and its tokens) are in the paused state.
+
+
+
+
+ Gets a pause token controlled by this source.
+
+
+
+
+ A type that allows an operation to be cooperatively paused.
+
+
+
+
+ The MRE that manages the "pause" logic, or null if this token can never be paused. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether this token can ever possibly be paused.
+
+
+
+
+ Whether or not this token is in the paused state.
+
+
+
+
+ Asynchronously waits until the pause token is not paused.
+
+
+
+
+ Asynchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ Synchronously waits until the pause token is not paused.
+
+
+
+
+ Synchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ A progress implementation that stores progress updates in a property. If this instance is created on a UI thread, its property is suitable for data binding.
+
+ The type of progress value.
+
+
+
+ The context of the thread that created this instance.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The initial progress value.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Occurs when the property value changes.
+
+
+
+
+ Provides helper types for .
+
+
+
+
+ Retrieves the current synchronization context, or the default synchronization context if there is no current synchronization context.
+
+
+
+
+ Utility class for temporarily switching implementations.
+
+
+
+
+ The previous .
+
+
+
+
+ Whether this object has already been disposed.
+
+
+
+
+ Initializes a new instance of the class, installing the new .
+
+ The new .
+
+
+
+ Restores the old .
+
+
+
+
+ Provides synchronous extension methods for tasks.
+
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ The result of the task.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The result of the task.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed.
+
+
+
+ Represents the producer side of a unbound to a delegate, providing access to the consumer side through the property.
+
+
+
+
+ The underlying TCS.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified state.
+
+ The state to use as the underlying 's .
+
+
+
+ Initializes a new instance of the class with the specified options.
+
+ The options to use when creating the underlying .
+
+
+
+ Initializes a new instance of the class with the specified state and options.
+
+ The state to use as the underlying 's .
+ The options to use when creating the underlying .
+
+
+
+ Gets the created by this .
+
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ The underlying has already been completed.
+
+
+
+ Transitions the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the target asynchronous operation.
+ The type of the result of the source asynchronous operation.
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ The delegate used to retrieve the result. This is only invoked if indicates successful completion. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a with the specified value, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Attempts to complete a , forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Provides completed task constants.
+
+
+
+
+ A task that has been completed with the value true.
+
+
+
+
+ A task that has been completed with the value false.
+
+
+
+
+ A task that has been completed with the value 0.
+
+
+
+
+ A task that has been completed with the value -1.
+
+
+
+
+ A that has been completed.
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides completed task constants.
+
+ The type of the task result.
+
+
+
+ A task that has been completed with the default value of .
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides extension methods for tasks.
+
+
+
+
+ Creates a new array of tasks which complete in order.
+
+ The type of the results of the tasks.
+ The tasks to order by completion.
+
+
+
+ Provides extension methods for task factories.
+
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ A double-ended queue (deque), which provides O(1) indexed access, O(1) removals from the front and back, amortized O(1) insertions to the front and back, and O(N) insertions and removals anywhere else (with the operations getting slower as the index approaches the middle).
+
+ The type of elements contained in the deque.
+
+
+
+ The default capacity.
+
+
+
+
+ The circular buffer that holds the view.
+
+
+
+
+ The offset into where the view begins.
+
+
+
+
+ Initializes a new instance of the class with the specified capacity.
+
+ The initial capacity. Must be greater than 0.
+
+
+
+ Initializes a new instance of the class with the elements from the specified collection.
+
+ The collection.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a value indicating whether this list is read-only. This implementation always returns false.
+
+ true if this list is read-only; otherwise, false.
+
+
+
+ Gets or sets the item at the specified index.
+
+ The index of the item to get or set.
+ is not a valid index in this list.
+ This property is set and the list is read-only.
+
+
+
+ Inserts an item to this list at the specified index.
+
+ The zero-based index at which should be inserted.
+ The object to insert into this list.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Determines the index of a specific item in this list.
+
+ The object to locate in this list.
+ The index of if found in this list; otherwise, -1.
+
+
+
+ Adds an item to the end of this list.
+
+ The object to add to this list.
+
+ This list is read-only.
+
+
+
+
+ Determines whether this list contains a specific value.
+
+ The object to locate in this list.
+
+ true if is found in this list; otherwise, false.
+
+
+
+
+ Copies the elements of this list to an , starting at a particular index.
+
+ The one-dimensional that is the destination of the elements copied from this slice. The must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+ is null.
+
+
+ is less than 0.
+
+
+ is equal to or greater than the length of .
+ -or-
+ The number of elements in the source is greater than the available space from to the end of the destination .
+
+
+
+
+ Removes the first occurrence of a specific object from this list.
+
+ The object to remove from this list.
+
+ true if was successfully removed from this list; otherwise, false. This method also returns false if is not found in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Checks the argument to see if it refers to a valid insertion point in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Checks the argument to see if it refers to an existing element in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an existing element for the source.
+
+
+
+ Checks the and arguments for validity when applied to a source of a given length. Allows 0-element ranges, including a 0-element range at the end of the source.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into source at which the range begins.
+ The number of elements in the range.
+ Either or is less than 0.
+ The range [offset, offset + count) is not within the range [0, sourceLength).
+
+
+
+ Gets a value indicating whether this instance is empty.
+
+
+
+
+ Gets a value indicating whether this instance is at full capacity.
+
+
+
+
+ Gets a value indicating whether the buffer is "split" (meaning the beginning of the view is at a later index in than the end).
+
+
+
+
+ Gets or sets the capacity for this deque. This value must always be greater than zero, and this property cannot be set to a value less than .
+
+ Capacity cannot be set to a value less than .
+
+
+
+ Gets the number of elements contained in this deque.
+
+ The number of elements contained in this deque.
+
+
+
+ Applies the offset to , resulting in a buffer index.
+
+ The deque index.
+ The buffer index.
+
+
+
+ Gets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element at the specified index.
+
+
+
+ Sets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Inserts an element at the specified view index.
+
+ The zero-based view index at which the element should be inserted. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Removes an element at the specified view index.
+
+ The zero-based view index of the element to remove. This index is guaranteed to be valid.
+
+
+
+ Increments by using modulo- arithmetic.
+
+ The value by which to increase . May not be negative.
+ The value of after it was incremented.
+
+
+
+ Decrements by using modulo- arithmetic.
+
+ The value by which to reduce . May not be negative or greater than .
+ The value of before it was decremented.
+
+
+
+ Inserts a single element to the back of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Inserts a single element to the front of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Removes and returns the last element in the view. must be false when this method is called.
+
+ The former last element.
+
+
+
+ Removes and returns the first element in the view. must be false when this method is called.
+
+ The former first element.
+
+
+
+ Inserts a range of elements into the view.
+
+ The index into the view at which the elements are to be inserted.
+ The elements to insert.
+ The number of elements in . Must be greater than zero, and the sum of and must be less than or equal to .
+
+
+
+ Removes a range of elements from the view.
+
+ The index into the view at which the range begins.
+ The number of elements in the range. This must be greater than 0 and less than or equal to .
+
+
+
+ Doubles the capacity if necessary to make room for one more element. When this method returns, is false.
+
+
+
+
+ Inserts a single element at the back of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a single element at the front of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a collection of elements into this deque.
+
+ The index at which the collection is inserted.
+ The collection of elements to insert.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Removes a range of elements from this deque.
+
+ The index into the deque at which the range begins.
+ The number of elements to remove.
+ Either or is less than 0.
+ The range [, + ) is not within the range [0, ).
+
+
+
+ Removes and returns the last element of this deque.
+
+ The former last element.
+ The deque is empty.
+
+
+
+ Removes and returns the first element of this deque.
+
+ The former first element.
+ The deque is empty.
+
+
+
+ Removes all items from this deque.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/sl5/Nito.AsyncEx.Enlightenment.dll b/packages/Nito.AsyncEx.4.0.1/lib/sl5/Nito.AsyncEx.Enlightenment.dll
new file mode 100644
index 000000000..bb3f44f9f
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/sl5/Nito.AsyncEx.Enlightenment.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/sl5/Nito.AsyncEx.Enlightenment.xml b/packages/Nito.AsyncEx.4.0.1/lib/sl5/Nito.AsyncEx.Enlightenment.xml
new file mode 100644
index 000000000..ab5852697
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/sl5/Nito.AsyncEx.Enlightenment.xml
@@ -0,0 +1,54 @@
+
+
+
+ Nito.AsyncEx.Enlightenment
+
+
+
+
+ The TaskCreationOptions.DenyChildAttach value, if it exists; otherwise, 0.
+
+
+
+
+ A delegate that will call ExceptionDispatchInfo.Capture followed by ExceptionDispatchInfo.Throw, or null if the ExceptionDispatchInfo type does not exist.
+
+
+
+
+ A delegate that will call Exception.PrepForRemoting, or null if the method does not exist. This member is always null if is non-null.
+
+
+
+
+ Attempts to add the original stack trace to the collection.
+
+ The exception. May not be null.
+
+
+
+ The underlying queue.
+
+
+
+
+ An event that is set whenever the queue is non-empty or if the queue is empty and done.
+
+
+
+
+ Whether we are done adding tasks to the queue.
+
+
+
+
+ Verifies platform enlightenment.
+
+
+
+
+ Returns a value indicating whether the correct platform enlightenment provider has been loaded.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/sl5/Nito.AsyncEx.dll b/packages/Nito.AsyncEx.4.0.1/lib/sl5/Nito.AsyncEx.dll
new file mode 100644
index 000000000..55e19452a
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/sl5/Nito.AsyncEx.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/sl5/Nito.AsyncEx.xml b/packages/Nito.AsyncEx.4.0.1/lib/sl5/Nito.AsyncEx.xml
new file mode 100644
index 000000000..d497cca9c
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/sl5/Nito.AsyncEx.xml
@@ -0,0 +1,3930 @@
+
+
+
+ Nito.AsyncEx
+
+
+
+
+ An async-compatible auto-reset event.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible auto-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous auto-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event. This method may block the calling thread.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately.
+
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately. This method may block the calling thread.
+
+
+
+
+ Sets the event, atomically completing a task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ An async-compatible barrier.
+
+
+
+
+ Mutex used to control access to other fields.
+
+
+
+
+ The TCS used to signal the current phase.
+
+
+
+
+ The current phase.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ The total number of participants.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The asynchronous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ The synchonous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Gets a semi-unique identifier for this asynchronous barrier.
+
+
+
+
+ Gets the current phase of the barrier.
+
+
+
+
+ Gets the number of participants in this barrier.
+
+
+
+
+ Gets the number of participants for this phase that have not yet signalled.
+
+
+
+
+ Starts executing the post-phase action and returns a representing the action.
+
+
+
+
+ Signals completions to this barrier. Returns the task for the current phase, which may already be completed. Returns null if the signal count is greater than the remaining participant count.
+
+ The number of completions to signal.
+ Whether the participants should be removed permanently.
+
+
+
+ Signals the specified number of completions to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+ The cancellation token used to cancel the wait. If this signal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Adds the specified number of participants to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+ The number of participants to add.
+
+
+
+ Adds a participant to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and asynchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and asynchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ An async-compatible condition variable. This type uses Mesa-style semantics (the notifying tasks do not yield).
+
+
+
+
+ The lock associated with this condition variable.
+
+
+
+
+ The queue of waiting tasks.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+
+
+
+ Gets a semi-unique identifier for this asynchronous condition variable.
+
+
+
+
+ Sends a signal to a single task waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Provides a context for asynchronous operations. This class is threadsafe.
+
+
+ may only be called once. After returns, the async context should be disposed.
+
+
+
+
+ The queue holding the actions to run.
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The number of outstanding operations, including actions in the queue.
+
+
+
+
+ Initializes a new instance of the class. This is an advanced operation; most people should use one of the static Run methods instead.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous context. This is the same identifier as the context's .
+
+
+
+
+ Increments the outstanding asynchronous operation count.
+
+
+
+
+ Decrements the outstanding asynchronous operation count.
+
+
+
+
+ Queues a task for execution by . If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The task to queue. May not be null.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Disposes all resources used by this class. This method should NOT be called while is executing.
+
+
+
+
+ Executes all queued actions. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from tasks that are supposed to propagate errors.
+
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task. This method will unwrap and propagate errors from the task.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task proxy.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task proxy. This method will unwrap and propagate errors from the task proxy.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Gets the current for this thread, or null if this thread is not currently running in an .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . Be careful with async delegates; you may need to call and to prevent early termination of this .
+
+
+
+
+ The implementation used by .
+
+
+
+
+ The async context.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context.
+
+
+
+ Gets the async context.
+
+
+
+
+ Dispatches an asynchronous message to the async context. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Dispatches an asynchronous message to the async context, and waits for it to complete.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Responds to the notification that an operation has started by incrementing the outstanding asynchronous operation count.
+
+
+
+
+ Responds to the notification that an operation has completed by decrementing the outstanding asynchronous operation count.
+
+
+
+
+ Creates a copy of the synchronization context.
+
+ A new object.
+
+
+
+ Returns a hash code for this instance.
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+ Determines whether the specified is equal to this instance. It is considered equal if it refers to the same underlying async context as this instance.
+
+ The to compare with this instance.
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+ A blocking queue.
+
+
+
+
+ The underlying blocking collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a blocking enumerable that removes items from the queue. This enumerable only completes after has been called.
+
+ A blocking enumerable that removes items from the queue.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Attempts to add the item to the queue. If the queue has been marked as complete for adding, this method returns false.
+
+ The item to enqueue.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Marks the queue as complete for adding, allowing the enumerator returned from to eventually complete. This method may be called several times.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ A task scheduler which schedules tasks to an async context.
+
+
+
+
+ The async context for this task scheduler.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context for this task scheduler. May not be null.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Queues a to the scheduler. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The to be queued.
+
+
+
+ Determines whether the provided can be executed synchronously in this call, and if it can, executes it.
+
+ The to be executed.
+ A Boolean denoting whether or not task has previously been queued. If this parameter is True, then the task may have been previously queued (scheduled); if False, then the task is known not to have been queued, and this call is being made in order to execute the task inline without queuing it.
+ A Boolean value indicating whether the task was executed inline.
+ The was already executed.
+
+
+
+ Indicates the maximum concurrency level this is able to support.
+
+
+
+
+ Exposes the base method.
+
+ The task to attempt to execute.
+
+
+
+ A thread that executes actions within an .
+
+
+
+
+ The child thread.
+
+
+
+
+ The asynchronous context executed by the child thread.
+
+
+
+
+ A flag used to ensure we only call once during complex join/dispose operations.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands. If is true, then the child thread is an STA thread (throwing if the platform does not support STA threads).
+
+
+
+
+ Gets the executed by this thread.
+
+
+
+
+ Permits the thread to exit, if we have not already done so.
+
+
+
+
+ Requests the thread to exit and returns a task representing the exit of the thread. The thread will exit when all outstanding asynchronous operations complete.
+
+
+
+
+ Requests the thread to exit.
+
+
+
+
+ Gets the for this thread, which can be used to schedule work to this thread.
+
+
+
+
+ An async-compatible countdown event.
+
+
+
+
+ The TCS used to signal this event.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ Creates an async-compatible countdown event.
+
+ The number of signals this event will need before it becomes set. Must be greater than zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous countdown event.
+
+
+
+
+ Gets the current number of remaining signals before this event becomes set.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Attempts to modify the current count by the specified amount. This method returns false if the new current count value would be invalid, or if the count has already reached zero.
+
+ The amount to change the current count. This may be positive or negative, but not zero.
+
+
+
+ Attempts to add the specified value to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Attempts to add the specified value to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Provides asynchronous wrappers.
+
+ The type of the result of the asychronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method. May not be null.
+ The end method. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap. May not be null.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event.
+ The event args.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event. May not be null.
+ The name of the event. May not be null.
+ The event args.
+
+
+
+ Manages the subscription to an event on a target object, triggering a task (and unsubscribing) when the event is raised.
+
+ The type of event arguments passed to the event.
+
+
+
+ The source for our task, which is returned to the user.
+
+
+
+
+ The subscription to the event.
+
+
+
+
+ The object that publishes the event.
+
+
+
+
+ The event to which we subscribe.
+
+
+
+
+ Subscribes to the specified event.
+
+ The object that publishes the event.
+ The event to which we subscribe.
+
+
+
+ Gets the task that is completed when the event is raised.
+
+
+
+
+ Private method that handles event completion. Do not call this method; it is public to avoid security problems when reflecting.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+ The result of the asynchronous operation.
+
+
+
+ Provides asynchronous wrappers.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method.
+ The end method.
+
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Wraps a with a . When the is signalled, the returned is completed. If the handle is already signalled, this method acts synchronously.
+
+ The to observe.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the handle is already signalled or the timeout is zero, this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is (successfully) completed. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled or the cancellation token is already cancelled, this method acts synchronously.
+
+ The to observe.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled, the timeout is zero, or the cancellation token is already cancelled, then this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+
+
+
+
+ Provides support for asynchronous lazy initialization. This type is fully threadsafe.
+
+ The type of object that is being asynchronously initialized.
+
+
+
+ The underlying lazy task.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Initializes a new instance of the class.
+
+ The asynchronous delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lazy instance.
+
+
+
+
+ Whether the asynchronous factory method has started. This is initially false and becomes true when this instance is awaited or after is called.
+
+
+
+
+ Asynchronous infrastructure support. This method permits instances of to be await'ed.
+
+
+
+
+ Starts the asynchronous initialization, if it has not already started.
+
+
+
+
+ A mutual exclusion lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ Whether the lock is taken by a task.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock.
+
+
+
+
+ A task that is completed with the key object for this lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock using the specified wait queue.
+
+ The wait queue used to manage waiters.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+
+
+
+ Releases the lock.
+
+
+
+
+ The disposable which releases the lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ An async-compatible manual-reset event.
+
+
+
+
+ The object used for synchronization.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Creates an async-compatible manual-reset event.
+
+ Whether the manual-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible manual-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous manual-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Sets the event, atomically completing every task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ Resets the event. If the event is already reset, this method does nothing.
+
+
+
+
+ An async-compatible monitor.
+
+
+
+
+ The lock.
+
+
+
+
+ The condition variable.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Gets a semi-unique identifier for this monitor.
+
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Synchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Sends a signal to a single task waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ An async-compatible producer/consumer queue.
+
+ The type of elements contained in the queue.
+
+
+
+ The underlying queue.
+
+
+
+
+ The maximum number of elements allowed in the queue.
+
+
+
+
+ The mutual-exclusion lock protecting the queue.
+
+
+
+
+ A condition variable that is signalled when the queue is not full.
+
+
+
+
+ A condition variable that is signalled when the queue is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the queue is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements and a maximum element count.
+
+ The initial elements to place in the queue.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements.
+
+ The initial elements to place in the queue.
+
+
+
+ Creates a new async-compatible producer/consumer queue with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue.
+
+
+
+
+ Whether the queue is empty.
+
+
+
+
+ Whether the queue is full.
+
+
+
+
+ Releases resources held by this instance. After disposal, any use of this instance is undefined.
+
+
+
+
+ Asynchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Attempts to enqueue an item.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related enqueue operations. May be null if this is the only enqueue operation.
+
+
+
+ Attempts to enqueue an item. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. This method may block the calling thread. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item.
+
+ A cancellation token that can be used to abort the dequeue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related dequeue operations. May be null if this is the only dequeue operation.
+
+
+
+ Attempts to dequeue an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ The result of a TryDequeue, DequeueFromAny, or TryDequeueFromAny operation.
+
+
+
+
+ The queue from which the item was dequeued, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The dequeued item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ A reader/writer lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as writers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as upgradeable readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to upgrade a reader lock to a writer lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The current upgradeable reader lock key, if any. If this is not null, then there is an upgradeable reader lock held.
+
+
+
+
+ Number of reader locks held (including an upgradeable reader lock, if applicable); -1 if a writer lock is held; 0 if no locks are held.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ A task that is completed with the reader key object for this lock.
+
+
+
+
+ A task that is completed with the writer key object for this lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Applies a continuation to the task that will call if the task is canceled. This method may not be called while holding the sync lock.
+
+ The task to observe for cancellation.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously upgrades a reader lock to a writer lock. This method assumes the sync lock is already held.
+
+
+
+
+ Downgrades a writer lock to a reader lock. This method assumes the sync lock is already held.
+
+
+
+
+ Grants lock(s) to waiting tasks. This method assumes the sync lock is already held.
+
+
+
+
+ Releases the lock as a reader.
+
+
+
+
+ Releases the lock as a writer.
+
+
+
+
+ Releases the lock as an upgradeable reader.
+
+
+
+
+ The disposable which releases the reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which releases the writer lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which manages the upgradeable reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ The task doing the upgrade.
+
+
+
+
+ A task that is completed with the upgrade key object for this key.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Gets a value indicating whether this lock has been upgraded to a write lock.
+
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+
+
+
+ Downgrades the writer lock to a reader lock.
+
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which downgrades an upgradeable reader key.
+
+
+
+
+ The upgradeable reader key to downgrade.
+
+
+
+
+ Creates the upgrade key for an upgradeable reader key.
+
+ The upgradeable reader key to downgrade. May not be null.
+
+
+
+ Downgrade the upgradeable reader key.
+
+
+
+
+ An async-compatible semaphore. Alternatively, you could use SemaphoreSlim on .NET 4.5 / Windows Store.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the semaphore.
+
+
+
+
+ The number of waits that will be immediately granted.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+ The wait queue used to manage waiters.
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous semaphore.
+
+
+
+
+ Gets the number of slots currently available on this semaphore.
+
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ A collection of cancelable instances. Implementations must be threadsafe and must work correctly if the caller is holding a lock.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ Gets whether the queue is empty.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. The returned task must support both synchronous and asynchronous waits.
+
+ The queued task.
+
+
+
+ Removes a single entry in the wait queue. Returns a disposable that completes that entry.
+
+ The result used to complete the wait queue entry. If this isn't needed, use default(T).
+
+
+
+ Removes all entries in the wait queue. Returns a disposable that completes all entries.
+
+ The result used to complete the wait queue entries. If this isn't needed, use default(T).
+
+
+
+ Attempts to remove an entry from the wait queue. Returns a disposable that cancels the entry.
+
+ The task to cancel.
+ A value indicating whether the entry was found and canceled.
+
+
+
+ Removes all entries from the wait queue. Returns a disposable that cancels all entries.
+
+
+
+
+ Provides extension methods for wait queues.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ A synchronization object taken while cancelling the entry.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ The default wait queue implementation, which uses a double-ended queue.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ An awaitable wrapper around a task whose result is disposable. The wrapper is not disposable, so this prevents usage errors like "using (MyAsync())" when the appropriate usage should be "using (await MyAsync())".
+
+ The type of the result of the underlying task.
+
+
+
+ The underlying task.
+
+
+
+
+ Initializes a new awaitable wrapper around the specified task.
+
+ The underlying task to wrap.
+
+
+
+ Returns the underlying task.
+
+
+
+
+ Implicit conversion to the underlying task.
+
+ The awaitable wrapper.
+
+
+
+ Infrastructure. Returns the task awaiter for the underlying task.
+
+
+
+
+ Infrastructure. Returns a configured task awaiter for the underlying task.
+
+ Whether to attempt to marshal the continuation back to the captured context.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Returns a that is canceled when this is canceled. This method will leak resources if the cancellation token is long-lived; use for a similar approach with proper resource management.
+
+ The to monitor.
+ A that is canceled when this is canceled.
+
+
+
+ Returns a which holds the task for this cancellation token.
+
+ The cancellation token to observe.
+
+
+
+ Holds the task for a cancellation token, as well as the token registration. The registration is disposed when this instance is disposed.
+
+
+
+
+ The cancellation token registration, if any. This is null if the registration was not necessary.
+
+
+
+
+ Creates a task for the specified cancellation token, registering with the token if necessary.
+
+ The cancellation token to observe.
+
+
+
+ Gets the task for the source cancellation token.
+
+
+
+
+ Disposes the cancellation token registration, if any. Note that this may cause to never complete.
+
+
+
+
+ Helper methods for cancellation tokens.
+
+
+
+
+ Initializes the static members.
+
+
+
+
+ Gets , a cancellation token that is never canceled.
+
+
+
+
+ Gets a cancellation token that is already canceled.
+
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+ The options to use for the task continuation.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+
+
+
+ Manages the deferrals for a "command" event that may have asynchonous handlers.
+
+
+
+
+ The countdown event, triggered when all deferrals have completed. This is null if there are no deferrals.
+
+
+
+
+ Gets a deferral. The deferral is complete when disposed.
+
+ The deferral.
+
+
+
+ Notifies the manager that all deferrals have been requested, and returns a task that is completed when all deferrals have completed.
+
+ A task that is completed when all deferrals have completed.
+
+
+
+ A deferral.
+
+
+
+
+ The countdown event of the deferral manager.
+
+
+
+
+ Creates a new deferral referencing the countdown event of the deferral manager.
+
+ The countdown event of the deferral manager.
+
+
+
+ Completes the deferral.
+
+
+
+
+ Provides helper (non-extension) methods dealing with exceptions.
+
+
+
+
+ Attempts to prepare the exception for re-throwing by preserving the stack trace. The returned exception should be immediately thrown.
+
+ The exception. May not be null.
+ The that was passed into this method.
+
+
+
+ Allocates Ids for instances on demand. 0 is an invalid/unassigned Id. Ids may be non-unique in very long-running systems. This is similar to the Id system used by and .
+
+ The type for which ids are generated.
+
+
+
+ The last id generated for this type. This is 0 if no ids have been generated.
+
+
+
+
+ Returns the id, allocating it if necessary.
+
+ A reference to the field containing the id.
+
+
+
+ A that may or may not also reference its own . Instances of this type should always be disposed.
+
+
+
+
+ The , if any. If this is not null, then is _cts.Token.
+
+
+
+
+ The . If is not null, then this is _cts.Token.
+
+
+
+
+ Creates a normalized cancellation token that can never be canceled.
+
+
+
+
+ Creates a normalized cancellation token from a . is set to the property of .
+
+ The source for this token.
+
+
+
+ Creates a normalized cancellation token from a . is set to .
+
+ The source for this token.
+
+
+
+ Releases any resources used by this normalized cancellation token.
+
+
+
+
+ Gets the for this normalized cancellation token.
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets a task that completes successfully when completes (successfully, faulted, or canceled). This property never changes and is never null.
+
+
+
+
+ Gets the current task status. This property raises a notification when the task completes.
+
+
+
+
+ Gets whether the task has completed. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task is busy (not completed). This property raises a notification when the value changes to false.
+
+
+
+
+ Gets whether the task has completed successfully. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task has been canceled. This property raises a notification only if the task is canceled (i.e., if the value changes to true).
+
+
+
+
+ Gets whether the task has faulted. This property raises a notification only if the task faults (i.e., if the value changes to true).
+
+
+
+
+ Gets the wrapped faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the error message for the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets the result of the task. Returns the default value of if the task has not completed successfully. This property raises a notification when the task completes successfully.
+
+
+
+
+ Factory for task completion notifiers.
+
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The type of the task result.
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ The source (controller) of a "pause token", which can be used to cooperatively pause and unpause operations.
+
+
+
+
+ The MRE that manages the "pause" logic. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether or not this source (and its tokens) are in the paused state.
+
+
+
+
+ Gets a pause token controlled by this source.
+
+
+
+
+ A type that allows an operation to be cooperatively paused.
+
+
+
+
+ The MRE that manages the "pause" logic, or null if this token can never be paused. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether this token can ever possibly be paused.
+
+
+
+
+ Whether or not this token is in the paused state.
+
+
+
+
+ Asynchronously waits until the pause token is not paused.
+
+
+
+
+ Asynchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ Synchronously waits until the pause token is not paused.
+
+
+
+
+ Synchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ A progress implementation that stores progress updates in a property. If this instance is created on a UI thread, its property is suitable for data binding.
+
+ The type of progress value.
+
+
+
+ The context of the thread that created this instance.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The initial progress value.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Occurs when the property value changes.
+
+
+
+
+ Provides helper types for .
+
+
+
+
+ Retrieves the current synchronization context, or the default synchronization context if there is no current synchronization context.
+
+
+
+
+ Utility class for temporarily switching implementations.
+
+
+
+
+ The previous .
+
+
+
+
+ Whether this object has already been disposed.
+
+
+
+
+ Initializes a new instance of the class, installing the new .
+
+ The new .
+
+
+
+ Restores the old .
+
+
+
+
+ Provides synchronous extension methods for tasks.
+
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ The result of the task.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The result of the task.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed.
+
+
+
+ Represents the producer side of a unbound to a delegate, providing access to the consumer side through the property.
+
+
+
+
+ The underlying TCS.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified state.
+
+ The state to use as the underlying 's .
+
+
+
+ Initializes a new instance of the class with the specified options.
+
+ The options to use when creating the underlying .
+
+
+
+ Initializes a new instance of the class with the specified state and options.
+
+ The state to use as the underlying 's .
+ The options to use when creating the underlying .
+
+
+
+ Gets the created by this .
+
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ The underlying has already been completed.
+
+
+
+ Transitions the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the target asynchronous operation.
+ The type of the result of the source asynchronous operation.
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ The delegate used to retrieve the result. This is only invoked if indicates successful completion. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a with the specified value, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Attempts to complete a , forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Provides completed task constants.
+
+
+
+
+ A task that has been completed with the value true.
+
+
+
+
+ A task that has been completed with the value false.
+
+
+
+
+ A task that has been completed with the value 0.
+
+
+
+
+ A task that has been completed with the value -1.
+
+
+
+
+ A that has been completed.
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides completed task constants.
+
+ The type of the task result.
+
+
+
+ A task that has been completed with the default value of .
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides extension methods for tasks.
+
+
+
+
+ Creates a new array of tasks which complete in order.
+
+ The type of the results of the tasks.
+ The tasks to order by completion.
+
+
+
+ Provides extension methods for task factories.
+
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ A double-ended queue (deque), which provides O(1) indexed access, O(1) removals from the front and back, amortized O(1) insertions to the front and back, and O(N) insertions and removals anywhere else (with the operations getting slower as the index approaches the middle).
+
+ The type of elements contained in the deque.
+
+
+
+ The default capacity.
+
+
+
+
+ The circular buffer that holds the view.
+
+
+
+
+ The offset into where the view begins.
+
+
+
+
+ Initializes a new instance of the class with the specified capacity.
+
+ The initial capacity. Must be greater than 0.
+
+
+
+ Initializes a new instance of the class with the elements from the specified collection.
+
+ The collection.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a value indicating whether this list is read-only. This implementation always returns false.
+
+ true if this list is read-only; otherwise, false.
+
+
+
+ Gets or sets the item at the specified index.
+
+ The index of the item to get or set.
+ is not a valid index in this list.
+ This property is set and the list is read-only.
+
+
+
+ Inserts an item to this list at the specified index.
+
+ The zero-based index at which should be inserted.
+ The object to insert into this list.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Determines the index of a specific item in this list.
+
+ The object to locate in this list.
+ The index of if found in this list; otherwise, -1.
+
+
+
+ Adds an item to the end of this list.
+
+ The object to add to this list.
+
+ This list is read-only.
+
+
+
+
+ Determines whether this list contains a specific value.
+
+ The object to locate in this list.
+
+ true if is found in this list; otherwise, false.
+
+
+
+
+ Copies the elements of this list to an , starting at a particular index.
+
+ The one-dimensional that is the destination of the elements copied from this slice. The must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+ is null.
+
+
+ is less than 0.
+
+
+ is equal to or greater than the length of .
+ -or-
+ The number of elements in the source is greater than the available space from to the end of the destination .
+
+
+
+
+ Removes the first occurrence of a specific object from this list.
+
+ The object to remove from this list.
+
+ true if was successfully removed from this list; otherwise, false. This method also returns false if is not found in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Checks the argument to see if it refers to a valid insertion point in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Checks the argument to see if it refers to an existing element in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an existing element for the source.
+
+
+
+ Checks the and arguments for validity when applied to a source of a given length. Allows 0-element ranges, including a 0-element range at the end of the source.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into source at which the range begins.
+ The number of elements in the range.
+ Either or is less than 0.
+ The range [offset, offset + count) is not within the range [0, sourceLength).
+
+
+
+ Gets a value indicating whether this instance is empty.
+
+
+
+
+ Gets a value indicating whether this instance is at full capacity.
+
+
+
+
+ Gets a value indicating whether the buffer is "split" (meaning the beginning of the view is at a later index in than the end).
+
+
+
+
+ Gets or sets the capacity for this deque. This value must always be greater than zero, and this property cannot be set to a value less than .
+
+ Capacity cannot be set to a value less than .
+
+
+
+ Gets the number of elements contained in this deque.
+
+ The number of elements contained in this deque.
+
+
+
+ Applies the offset to , resulting in a buffer index.
+
+ The deque index.
+ The buffer index.
+
+
+
+ Gets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element at the specified index.
+
+
+
+ Sets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Inserts an element at the specified view index.
+
+ The zero-based view index at which the element should be inserted. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Removes an element at the specified view index.
+
+ The zero-based view index of the element to remove. This index is guaranteed to be valid.
+
+
+
+ Increments by using modulo- arithmetic.
+
+ The value by which to increase . May not be negative.
+ The value of after it was incremented.
+
+
+
+ Decrements by using modulo- arithmetic.
+
+ The value by which to reduce . May not be negative or greater than .
+ The value of before it was decremented.
+
+
+
+ Inserts a single element to the back of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Inserts a single element to the front of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Removes and returns the last element in the view. must be false when this method is called.
+
+ The former last element.
+
+
+
+ Removes and returns the first element in the view. must be false when this method is called.
+
+ The former first element.
+
+
+
+ Inserts a range of elements into the view.
+
+ The index into the view at which the elements are to be inserted.
+ The elements to insert.
+ The number of elements in . Must be greater than zero, and the sum of and must be less than or equal to .
+
+
+
+ Removes a range of elements from the view.
+
+ The index into the view at which the range begins.
+ The number of elements in the range. This must be greater than 0 and less than or equal to .
+
+
+
+ Doubles the capacity if necessary to make room for one more element. When this method returns, is false.
+
+
+
+
+ Inserts a single element at the back of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a single element at the front of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a collection of elements into this deque.
+
+ The index at which the collection is inserted.
+ The collection of elements to insert.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Removes a range of elements from this deque.
+
+ The index into the deque at which the range begins.
+ The number of elements to remove.
+ Either or is less than 0.
+ The range [, + ) is not within the range [0, ).
+
+
+
+ Removes and returns the last element of this deque.
+
+ The former last element.
+ The deque is empty.
+
+
+
+ Removes and returns the first element of this deque.
+
+ The former first element.
+ The deque is empty.
+
+
+
+ Removes all items from this deque.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/wp8/Nito.AsyncEx.Enlightenment.dll b/packages/Nito.AsyncEx.4.0.1/lib/wp8/Nito.AsyncEx.Enlightenment.dll
new file mode 100644
index 000000000..2eaa10ada
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/wp8/Nito.AsyncEx.Enlightenment.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/wp8/Nito.AsyncEx.Enlightenment.xml b/packages/Nito.AsyncEx.4.0.1/lib/wp8/Nito.AsyncEx.Enlightenment.xml
new file mode 100644
index 000000000..20ba5eaf0
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/wp8/Nito.AsyncEx.Enlightenment.xml
@@ -0,0 +1,33 @@
+
+
+
+ Nito.AsyncEx.Enlightenment
+
+
+
+
+ Verifies platform enlightenment.
+
+
+
+
+ Returns a value indicating whether the correct platform enlightenment provider has been loaded.
+
+
+
+
+ The underlying queue.
+
+
+
+
+ An event that is set whenever the queue is non-empty or if the queue is empty and done.
+
+
+
+
+ Whether we are done adding tasks to the queue.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/wp8/Nito.AsyncEx.dll b/packages/Nito.AsyncEx.4.0.1/lib/wp8/Nito.AsyncEx.dll
new file mode 100644
index 000000000..e414e7a28
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/wp8/Nito.AsyncEx.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/wp8/Nito.AsyncEx.xml b/packages/Nito.AsyncEx.4.0.1/lib/wp8/Nito.AsyncEx.xml
new file mode 100644
index 000000000..d497cca9c
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/wp8/Nito.AsyncEx.xml
@@ -0,0 +1,3930 @@
+
+
+
+ Nito.AsyncEx
+
+
+
+
+ An async-compatible auto-reset event.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible auto-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous auto-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event. This method may block the calling thread.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately.
+
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately. This method may block the calling thread.
+
+
+
+
+ Sets the event, atomically completing a task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ An async-compatible barrier.
+
+
+
+
+ Mutex used to control access to other fields.
+
+
+
+
+ The TCS used to signal the current phase.
+
+
+
+
+ The current phase.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ The total number of participants.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The asynchronous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ The synchonous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Gets a semi-unique identifier for this asynchronous barrier.
+
+
+
+
+ Gets the current phase of the barrier.
+
+
+
+
+ Gets the number of participants in this barrier.
+
+
+
+
+ Gets the number of participants for this phase that have not yet signalled.
+
+
+
+
+ Starts executing the post-phase action and returns a representing the action.
+
+
+
+
+ Signals completions to this barrier. Returns the task for the current phase, which may already be completed. Returns null if the signal count is greater than the remaining participant count.
+
+ The number of completions to signal.
+ Whether the participants should be removed permanently.
+
+
+
+ Signals the specified number of completions to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+ The cancellation token used to cancel the wait. If this signal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Adds the specified number of participants to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+ The number of participants to add.
+
+
+
+ Adds a participant to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and asynchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and asynchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ An async-compatible condition variable. This type uses Mesa-style semantics (the notifying tasks do not yield).
+
+
+
+
+ The lock associated with this condition variable.
+
+
+
+
+ The queue of waiting tasks.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+
+
+
+ Gets a semi-unique identifier for this asynchronous condition variable.
+
+
+
+
+ Sends a signal to a single task waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Provides a context for asynchronous operations. This class is threadsafe.
+
+
+ may only be called once. After returns, the async context should be disposed.
+
+
+
+
+ The queue holding the actions to run.
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The number of outstanding operations, including actions in the queue.
+
+
+
+
+ Initializes a new instance of the class. This is an advanced operation; most people should use one of the static Run methods instead.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous context. This is the same identifier as the context's .
+
+
+
+
+ Increments the outstanding asynchronous operation count.
+
+
+
+
+ Decrements the outstanding asynchronous operation count.
+
+
+
+
+ Queues a task for execution by . If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The task to queue. May not be null.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Disposes all resources used by this class. This method should NOT be called while is executing.
+
+
+
+
+ Executes all queued actions. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from tasks that are supposed to propagate errors.
+
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task. This method will unwrap and propagate errors from the task.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task proxy.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task proxy. This method will unwrap and propagate errors from the task proxy.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Gets the current for this thread, or null if this thread is not currently running in an .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . Be careful with async delegates; you may need to call and to prevent early termination of this .
+
+
+
+
+ The implementation used by .
+
+
+
+
+ The async context.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context.
+
+
+
+ Gets the async context.
+
+
+
+
+ Dispatches an asynchronous message to the async context. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Dispatches an asynchronous message to the async context, and waits for it to complete.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Responds to the notification that an operation has started by incrementing the outstanding asynchronous operation count.
+
+
+
+
+ Responds to the notification that an operation has completed by decrementing the outstanding asynchronous operation count.
+
+
+
+
+ Creates a copy of the synchronization context.
+
+ A new object.
+
+
+
+ Returns a hash code for this instance.
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+ Determines whether the specified is equal to this instance. It is considered equal if it refers to the same underlying async context as this instance.
+
+ The to compare with this instance.
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+ A blocking queue.
+
+
+
+
+ The underlying blocking collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a blocking enumerable that removes items from the queue. This enumerable only completes after has been called.
+
+ A blocking enumerable that removes items from the queue.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Attempts to add the item to the queue. If the queue has been marked as complete for adding, this method returns false.
+
+ The item to enqueue.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Marks the queue as complete for adding, allowing the enumerator returned from to eventually complete. This method may be called several times.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ A task scheduler which schedules tasks to an async context.
+
+
+
+
+ The async context for this task scheduler.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context for this task scheduler. May not be null.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Queues a to the scheduler. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The to be queued.
+
+
+
+ Determines whether the provided can be executed synchronously in this call, and if it can, executes it.
+
+ The to be executed.
+ A Boolean denoting whether or not task has previously been queued. If this parameter is True, then the task may have been previously queued (scheduled); if False, then the task is known not to have been queued, and this call is being made in order to execute the task inline without queuing it.
+ A Boolean value indicating whether the task was executed inline.
+ The was already executed.
+
+
+
+ Indicates the maximum concurrency level this is able to support.
+
+
+
+
+ Exposes the base method.
+
+ The task to attempt to execute.
+
+
+
+ A thread that executes actions within an .
+
+
+
+
+ The child thread.
+
+
+
+
+ The asynchronous context executed by the child thread.
+
+
+
+
+ A flag used to ensure we only call once during complex join/dispose operations.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands. If is true, then the child thread is an STA thread (throwing if the platform does not support STA threads).
+
+
+
+
+ Gets the executed by this thread.
+
+
+
+
+ Permits the thread to exit, if we have not already done so.
+
+
+
+
+ Requests the thread to exit and returns a task representing the exit of the thread. The thread will exit when all outstanding asynchronous operations complete.
+
+
+
+
+ Requests the thread to exit.
+
+
+
+
+ Gets the for this thread, which can be used to schedule work to this thread.
+
+
+
+
+ An async-compatible countdown event.
+
+
+
+
+ The TCS used to signal this event.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ Creates an async-compatible countdown event.
+
+ The number of signals this event will need before it becomes set. Must be greater than zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous countdown event.
+
+
+
+
+ Gets the current number of remaining signals before this event becomes set.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Attempts to modify the current count by the specified amount. This method returns false if the new current count value would be invalid, or if the count has already reached zero.
+
+ The amount to change the current count. This may be positive or negative, but not zero.
+
+
+
+ Attempts to add the specified value to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Attempts to add the specified value to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Provides asynchronous wrappers.
+
+ The type of the result of the asychronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method. May not be null.
+ The end method. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap. May not be null.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event.
+ The event args.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event. May not be null.
+ The name of the event. May not be null.
+ The event args.
+
+
+
+ Manages the subscription to an event on a target object, triggering a task (and unsubscribing) when the event is raised.
+
+ The type of event arguments passed to the event.
+
+
+
+ The source for our task, which is returned to the user.
+
+
+
+
+ The subscription to the event.
+
+
+
+
+ The object that publishes the event.
+
+
+
+
+ The event to which we subscribe.
+
+
+
+
+ Subscribes to the specified event.
+
+ The object that publishes the event.
+ The event to which we subscribe.
+
+
+
+ Gets the task that is completed when the event is raised.
+
+
+
+
+ Private method that handles event completion. Do not call this method; it is public to avoid security problems when reflecting.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+ The result of the asynchronous operation.
+
+
+
+ Provides asynchronous wrappers.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method.
+ The end method.
+
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Wraps a with a . When the is signalled, the returned is completed. If the handle is already signalled, this method acts synchronously.
+
+ The to observe.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the handle is already signalled or the timeout is zero, this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is (successfully) completed. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled or the cancellation token is already cancelled, this method acts synchronously.
+
+ The to observe.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled, the timeout is zero, or the cancellation token is already cancelled, then this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+
+
+
+
+ Provides support for asynchronous lazy initialization. This type is fully threadsafe.
+
+ The type of object that is being asynchronously initialized.
+
+
+
+ The underlying lazy task.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Initializes a new instance of the class.
+
+ The asynchronous delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lazy instance.
+
+
+
+
+ Whether the asynchronous factory method has started. This is initially false and becomes true when this instance is awaited or after is called.
+
+
+
+
+ Asynchronous infrastructure support. This method permits instances of to be await'ed.
+
+
+
+
+ Starts the asynchronous initialization, if it has not already started.
+
+
+
+
+ A mutual exclusion lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ Whether the lock is taken by a task.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock.
+
+
+
+
+ A task that is completed with the key object for this lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock using the specified wait queue.
+
+ The wait queue used to manage waiters.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+
+
+
+ Releases the lock.
+
+
+
+
+ The disposable which releases the lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ An async-compatible manual-reset event.
+
+
+
+
+ The object used for synchronization.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Creates an async-compatible manual-reset event.
+
+ Whether the manual-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible manual-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous manual-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Sets the event, atomically completing every task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ Resets the event. If the event is already reset, this method does nothing.
+
+
+
+
+ An async-compatible monitor.
+
+
+
+
+ The lock.
+
+
+
+
+ The condition variable.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Gets a semi-unique identifier for this monitor.
+
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Synchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Sends a signal to a single task waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ An async-compatible producer/consumer queue.
+
+ The type of elements contained in the queue.
+
+
+
+ The underlying queue.
+
+
+
+
+ The maximum number of elements allowed in the queue.
+
+
+
+
+ The mutual-exclusion lock protecting the queue.
+
+
+
+
+ A condition variable that is signalled when the queue is not full.
+
+
+
+
+ A condition variable that is signalled when the queue is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the queue is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements and a maximum element count.
+
+ The initial elements to place in the queue.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements.
+
+ The initial elements to place in the queue.
+
+
+
+ Creates a new async-compatible producer/consumer queue with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue.
+
+
+
+
+ Whether the queue is empty.
+
+
+
+
+ Whether the queue is full.
+
+
+
+
+ Releases resources held by this instance. After disposal, any use of this instance is undefined.
+
+
+
+
+ Asynchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Attempts to enqueue an item.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related enqueue operations. May be null if this is the only enqueue operation.
+
+
+
+ Attempts to enqueue an item. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. This method may block the calling thread. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item.
+
+ A cancellation token that can be used to abort the dequeue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related dequeue operations. May be null if this is the only dequeue operation.
+
+
+
+ Attempts to dequeue an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ The result of a TryDequeue, DequeueFromAny, or TryDequeueFromAny operation.
+
+
+
+
+ The queue from which the item was dequeued, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The dequeued item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ A reader/writer lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as writers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as upgradeable readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to upgrade a reader lock to a writer lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The current upgradeable reader lock key, if any. If this is not null, then there is an upgradeable reader lock held.
+
+
+
+
+ Number of reader locks held (including an upgradeable reader lock, if applicable); -1 if a writer lock is held; 0 if no locks are held.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ A task that is completed with the reader key object for this lock.
+
+
+
+
+ A task that is completed with the writer key object for this lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Applies a continuation to the task that will call if the task is canceled. This method may not be called while holding the sync lock.
+
+ The task to observe for cancellation.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously upgrades a reader lock to a writer lock. This method assumes the sync lock is already held.
+
+
+
+
+ Downgrades a writer lock to a reader lock. This method assumes the sync lock is already held.
+
+
+
+
+ Grants lock(s) to waiting tasks. This method assumes the sync lock is already held.
+
+
+
+
+ Releases the lock as a reader.
+
+
+
+
+ Releases the lock as a writer.
+
+
+
+
+ Releases the lock as an upgradeable reader.
+
+
+
+
+ The disposable which releases the reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which releases the writer lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which manages the upgradeable reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ The task doing the upgrade.
+
+
+
+
+ A task that is completed with the upgrade key object for this key.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Gets a value indicating whether this lock has been upgraded to a write lock.
+
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+
+
+
+ Downgrades the writer lock to a reader lock.
+
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which downgrades an upgradeable reader key.
+
+
+
+
+ The upgradeable reader key to downgrade.
+
+
+
+
+ Creates the upgrade key for an upgradeable reader key.
+
+ The upgradeable reader key to downgrade. May not be null.
+
+
+
+ Downgrade the upgradeable reader key.
+
+
+
+
+ An async-compatible semaphore. Alternatively, you could use SemaphoreSlim on .NET 4.5 / Windows Store.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the semaphore.
+
+
+
+
+ The number of waits that will be immediately granted.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+ The wait queue used to manage waiters.
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous semaphore.
+
+
+
+
+ Gets the number of slots currently available on this semaphore.
+
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ A collection of cancelable instances. Implementations must be threadsafe and must work correctly if the caller is holding a lock.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ Gets whether the queue is empty.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. The returned task must support both synchronous and asynchronous waits.
+
+ The queued task.
+
+
+
+ Removes a single entry in the wait queue. Returns a disposable that completes that entry.
+
+ The result used to complete the wait queue entry. If this isn't needed, use default(T).
+
+
+
+ Removes all entries in the wait queue. Returns a disposable that completes all entries.
+
+ The result used to complete the wait queue entries. If this isn't needed, use default(T).
+
+
+
+ Attempts to remove an entry from the wait queue. Returns a disposable that cancels the entry.
+
+ The task to cancel.
+ A value indicating whether the entry was found and canceled.
+
+
+
+ Removes all entries from the wait queue. Returns a disposable that cancels all entries.
+
+
+
+
+ Provides extension methods for wait queues.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ A synchronization object taken while cancelling the entry.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ The default wait queue implementation, which uses a double-ended queue.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ An awaitable wrapper around a task whose result is disposable. The wrapper is not disposable, so this prevents usage errors like "using (MyAsync())" when the appropriate usage should be "using (await MyAsync())".
+
+ The type of the result of the underlying task.
+
+
+
+ The underlying task.
+
+
+
+
+ Initializes a new awaitable wrapper around the specified task.
+
+ The underlying task to wrap.
+
+
+
+ Returns the underlying task.
+
+
+
+
+ Implicit conversion to the underlying task.
+
+ The awaitable wrapper.
+
+
+
+ Infrastructure. Returns the task awaiter for the underlying task.
+
+
+
+
+ Infrastructure. Returns a configured task awaiter for the underlying task.
+
+ Whether to attempt to marshal the continuation back to the captured context.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Returns a that is canceled when this is canceled. This method will leak resources if the cancellation token is long-lived; use for a similar approach with proper resource management.
+
+ The to monitor.
+ A that is canceled when this is canceled.
+
+
+
+ Returns a which holds the task for this cancellation token.
+
+ The cancellation token to observe.
+
+
+
+ Holds the task for a cancellation token, as well as the token registration. The registration is disposed when this instance is disposed.
+
+
+
+
+ The cancellation token registration, if any. This is null if the registration was not necessary.
+
+
+
+
+ Creates a task for the specified cancellation token, registering with the token if necessary.
+
+ The cancellation token to observe.
+
+
+
+ Gets the task for the source cancellation token.
+
+
+
+
+ Disposes the cancellation token registration, if any. Note that this may cause to never complete.
+
+
+
+
+ Helper methods for cancellation tokens.
+
+
+
+
+ Initializes the static members.
+
+
+
+
+ Gets , a cancellation token that is never canceled.
+
+
+
+
+ Gets a cancellation token that is already canceled.
+
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+ The options to use for the task continuation.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+
+
+
+ Manages the deferrals for a "command" event that may have asynchonous handlers.
+
+
+
+
+ The countdown event, triggered when all deferrals have completed. This is null if there are no deferrals.
+
+
+
+
+ Gets a deferral. The deferral is complete when disposed.
+
+ The deferral.
+
+
+
+ Notifies the manager that all deferrals have been requested, and returns a task that is completed when all deferrals have completed.
+
+ A task that is completed when all deferrals have completed.
+
+
+
+ A deferral.
+
+
+
+
+ The countdown event of the deferral manager.
+
+
+
+
+ Creates a new deferral referencing the countdown event of the deferral manager.
+
+ The countdown event of the deferral manager.
+
+
+
+ Completes the deferral.
+
+
+
+
+ Provides helper (non-extension) methods dealing with exceptions.
+
+
+
+
+ Attempts to prepare the exception for re-throwing by preserving the stack trace. The returned exception should be immediately thrown.
+
+ The exception. May not be null.
+ The that was passed into this method.
+
+
+
+ Allocates Ids for instances on demand. 0 is an invalid/unassigned Id. Ids may be non-unique in very long-running systems. This is similar to the Id system used by and .
+
+ The type for which ids are generated.
+
+
+
+ The last id generated for this type. This is 0 if no ids have been generated.
+
+
+
+
+ Returns the id, allocating it if necessary.
+
+ A reference to the field containing the id.
+
+
+
+ A that may or may not also reference its own . Instances of this type should always be disposed.
+
+
+
+
+ The , if any. If this is not null, then is _cts.Token.
+
+
+
+
+ The . If is not null, then this is _cts.Token.
+
+
+
+
+ Creates a normalized cancellation token that can never be canceled.
+
+
+
+
+ Creates a normalized cancellation token from a . is set to the property of .
+
+ The source for this token.
+
+
+
+ Creates a normalized cancellation token from a . is set to .
+
+ The source for this token.
+
+
+
+ Releases any resources used by this normalized cancellation token.
+
+
+
+
+ Gets the for this normalized cancellation token.
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets a task that completes successfully when completes (successfully, faulted, or canceled). This property never changes and is never null.
+
+
+
+
+ Gets the current task status. This property raises a notification when the task completes.
+
+
+
+
+ Gets whether the task has completed. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task is busy (not completed). This property raises a notification when the value changes to false.
+
+
+
+
+ Gets whether the task has completed successfully. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task has been canceled. This property raises a notification only if the task is canceled (i.e., if the value changes to true).
+
+
+
+
+ Gets whether the task has faulted. This property raises a notification only if the task faults (i.e., if the value changes to true).
+
+
+
+
+ Gets the wrapped faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the error message for the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets the result of the task. Returns the default value of if the task has not completed successfully. This property raises a notification when the task completes successfully.
+
+
+
+
+ Factory for task completion notifiers.
+
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The type of the task result.
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ The source (controller) of a "pause token", which can be used to cooperatively pause and unpause operations.
+
+
+
+
+ The MRE that manages the "pause" logic. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether or not this source (and its tokens) are in the paused state.
+
+
+
+
+ Gets a pause token controlled by this source.
+
+
+
+
+ A type that allows an operation to be cooperatively paused.
+
+
+
+
+ The MRE that manages the "pause" logic, or null if this token can never be paused. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether this token can ever possibly be paused.
+
+
+
+
+ Whether or not this token is in the paused state.
+
+
+
+
+ Asynchronously waits until the pause token is not paused.
+
+
+
+
+ Asynchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ Synchronously waits until the pause token is not paused.
+
+
+
+
+ Synchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ A progress implementation that stores progress updates in a property. If this instance is created on a UI thread, its property is suitable for data binding.
+
+ The type of progress value.
+
+
+
+ The context of the thread that created this instance.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The initial progress value.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Occurs when the property value changes.
+
+
+
+
+ Provides helper types for .
+
+
+
+
+ Retrieves the current synchronization context, or the default synchronization context if there is no current synchronization context.
+
+
+
+
+ Utility class for temporarily switching implementations.
+
+
+
+
+ The previous .
+
+
+
+
+ Whether this object has already been disposed.
+
+
+
+
+ Initializes a new instance of the class, installing the new .
+
+ The new .
+
+
+
+ Restores the old .
+
+
+
+
+ Provides synchronous extension methods for tasks.
+
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ The result of the task.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The result of the task.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed.
+
+
+
+ Represents the producer side of a unbound to a delegate, providing access to the consumer side through the property.
+
+
+
+
+ The underlying TCS.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified state.
+
+ The state to use as the underlying 's .
+
+
+
+ Initializes a new instance of the class with the specified options.
+
+ The options to use when creating the underlying .
+
+
+
+ Initializes a new instance of the class with the specified state and options.
+
+ The state to use as the underlying 's .
+ The options to use when creating the underlying .
+
+
+
+ Gets the created by this .
+
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ The underlying has already been completed.
+
+
+
+ Transitions the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the target asynchronous operation.
+ The type of the result of the source asynchronous operation.
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ The delegate used to retrieve the result. This is only invoked if indicates successful completion. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a with the specified value, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Attempts to complete a , forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Provides completed task constants.
+
+
+
+
+ A task that has been completed with the value true.
+
+
+
+
+ A task that has been completed with the value false.
+
+
+
+
+ A task that has been completed with the value 0.
+
+
+
+
+ A task that has been completed with the value -1.
+
+
+
+
+ A that has been completed.
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides completed task constants.
+
+ The type of the task result.
+
+
+
+ A task that has been completed with the default value of .
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides extension methods for tasks.
+
+
+
+
+ Creates a new array of tasks which complete in order.
+
+ The type of the results of the tasks.
+ The tasks to order by completion.
+
+
+
+ Provides extension methods for task factories.
+
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ A double-ended queue (deque), which provides O(1) indexed access, O(1) removals from the front and back, amortized O(1) insertions to the front and back, and O(N) insertions and removals anywhere else (with the operations getting slower as the index approaches the middle).
+
+ The type of elements contained in the deque.
+
+
+
+ The default capacity.
+
+
+
+
+ The circular buffer that holds the view.
+
+
+
+
+ The offset into where the view begins.
+
+
+
+
+ Initializes a new instance of the class with the specified capacity.
+
+ The initial capacity. Must be greater than 0.
+
+
+
+ Initializes a new instance of the class with the elements from the specified collection.
+
+ The collection.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a value indicating whether this list is read-only. This implementation always returns false.
+
+ true if this list is read-only; otherwise, false.
+
+
+
+ Gets or sets the item at the specified index.
+
+ The index of the item to get or set.
+ is not a valid index in this list.
+ This property is set and the list is read-only.
+
+
+
+ Inserts an item to this list at the specified index.
+
+ The zero-based index at which should be inserted.
+ The object to insert into this list.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Determines the index of a specific item in this list.
+
+ The object to locate in this list.
+ The index of if found in this list; otherwise, -1.
+
+
+
+ Adds an item to the end of this list.
+
+ The object to add to this list.
+
+ This list is read-only.
+
+
+
+
+ Determines whether this list contains a specific value.
+
+ The object to locate in this list.
+
+ true if is found in this list; otherwise, false.
+
+
+
+
+ Copies the elements of this list to an , starting at a particular index.
+
+ The one-dimensional that is the destination of the elements copied from this slice. The must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+ is null.
+
+
+ is less than 0.
+
+
+ is equal to or greater than the length of .
+ -or-
+ The number of elements in the source is greater than the available space from to the end of the destination .
+
+
+
+
+ Removes the first occurrence of a specific object from this list.
+
+ The object to remove from this list.
+
+ true if was successfully removed from this list; otherwise, false. This method also returns false if is not found in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Checks the argument to see if it refers to a valid insertion point in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Checks the argument to see if it refers to an existing element in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an existing element for the source.
+
+
+
+ Checks the and arguments for validity when applied to a source of a given length. Allows 0-element ranges, including a 0-element range at the end of the source.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into source at which the range begins.
+ The number of elements in the range.
+ Either or is less than 0.
+ The range [offset, offset + count) is not within the range [0, sourceLength).
+
+
+
+ Gets a value indicating whether this instance is empty.
+
+
+
+
+ Gets a value indicating whether this instance is at full capacity.
+
+
+
+
+ Gets a value indicating whether the buffer is "split" (meaning the beginning of the view is at a later index in than the end).
+
+
+
+
+ Gets or sets the capacity for this deque. This value must always be greater than zero, and this property cannot be set to a value less than .
+
+ Capacity cannot be set to a value less than .
+
+
+
+ Gets the number of elements contained in this deque.
+
+ The number of elements contained in this deque.
+
+
+
+ Applies the offset to , resulting in a buffer index.
+
+ The deque index.
+ The buffer index.
+
+
+
+ Gets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element at the specified index.
+
+
+
+ Sets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Inserts an element at the specified view index.
+
+ The zero-based view index at which the element should be inserted. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Removes an element at the specified view index.
+
+ The zero-based view index of the element to remove. This index is guaranteed to be valid.
+
+
+
+ Increments by using modulo- arithmetic.
+
+ The value by which to increase . May not be negative.
+ The value of after it was incremented.
+
+
+
+ Decrements by using modulo- arithmetic.
+
+ The value by which to reduce . May not be negative or greater than .
+ The value of before it was decremented.
+
+
+
+ Inserts a single element to the back of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Inserts a single element to the front of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Removes and returns the last element in the view. must be false when this method is called.
+
+ The former last element.
+
+
+
+ Removes and returns the first element in the view. must be false when this method is called.
+
+ The former first element.
+
+
+
+ Inserts a range of elements into the view.
+
+ The index into the view at which the elements are to be inserted.
+ The elements to insert.
+ The number of elements in . Must be greater than zero, and the sum of and must be less than or equal to .
+
+
+
+ Removes a range of elements from the view.
+
+ The index into the view at which the range begins.
+ The number of elements in the range. This must be greater than 0 and less than or equal to .
+
+
+
+ Doubles the capacity if necessary to make room for one more element. When this method returns, is false.
+
+
+
+
+ Inserts a single element at the back of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a single element at the front of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a collection of elements into this deque.
+
+ The index at which the collection is inserted.
+ The collection of elements to insert.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Removes a range of elements from this deque.
+
+ The index into the deque at which the range begins.
+ The number of elements to remove.
+ Either or is less than 0.
+ The range [, + ) is not within the range [0, ).
+
+
+
+ Removes and returns the last element of this deque.
+
+ The former last element.
+ The deque is empty.
+
+
+
+ Removes and returns the first element of this deque.
+
+ The former first element.
+ The deque is empty.
+
+
+
+ Removes all items from this deque.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/wpa81/Nito.AsyncEx.Concurrent.dll b/packages/Nito.AsyncEx.4.0.1/lib/wpa81/Nito.AsyncEx.Concurrent.dll
new file mode 100644
index 000000000..8f91a729a
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/wpa81/Nito.AsyncEx.Concurrent.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/wpa81/Nito.AsyncEx.Concurrent.xml b/packages/Nito.AsyncEx.4.0.1/lib/wpa81/Nito.AsyncEx.Concurrent.xml
new file mode 100644
index 000000000..497b59a89
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/wpa81/Nito.AsyncEx.Concurrent.xml
@@ -0,0 +1,401 @@
+
+
+
+ Nito.AsyncEx.Concurrent
+
+
+
+
+ An async-compatible producer/consumer collection.
+
+ The type of elements contained in the collection.
+
+
+
+ The underlying collection.
+
+
+
+
+ The maximum number of elements allowed in the collection.
+
+
+
+
+ The mutual-exclusion lock protecting the collection.
+
+
+
+
+ A condition variable that is signalled when the collection is not full.
+
+
+
+
+ A condition variable that is signalled when the collection is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the collection is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer collection wrapping the specified collection and with a maximum element count.
+
+ The collection to wrap.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer collection wrapping the specified collection.
+
+ The collection to wrap.
+
+
+
+ Creates a new async-compatible producer/consumer collection with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer collection.
+
+
+
+
+ Whether the collection is empty.
+
+
+
+
+ Whether the collection is full.
+
+
+
+
+ Asynchronously marks the producer/consumer collection as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer collection as complete for adding.
+
+
+
+
+ Attempts to add an item.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related add operations. May be null if this is the only add operation.
+
+
+
+ Attempts to add an item. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+
+
+
+ Attempts to add an item to the producer/consumer collection. Returns false if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection.
+
+ The item to add.
+
+
+
+ Adds an item to the producer/consumer collection. Throws if the producer/consumer collection has completed adding or if the item was rejected by the underlying collection. This method may block the calling thread.
+
+ The item to add.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer collection has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer collection has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer collection.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to take an item.
+
+ A cancellation token that can be used to abort the take operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related take operations. May be null if this is the only take operation.
+
+
+
+ Attempts to take an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from the producer/consumer collection.
+
+
+
+
+ Attempts to take an item from the producer/consumer collection. This method may block the calling thread.
+
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed.
+
+
+
+
+ Takes an item from the producer/consumer collection. Returns the item. Throws if the producer/consumer collection has completed adding and is empty, or if the take from the underlying collection failed. This method may block the calling thread.
+
+
+
+
+ The result of a TryTake, TakeFromAny, or TryTakeFromAny operation.
+
+
+
+
+ The collection from which the item was taken, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to add an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Returns null if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ A cancellation token that can be used to abort the add operation.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Adds an item to any of a number of producer/consumer collections. Returns the producer/consumer collection that received the item. Throws if all producer/consumer collections have completed adding, or if any add operation on an underlying collection failed. This method may block the calling thread.
+
+ The producer/consumer collections.
+ The item to add.
+ The producer/consumer collection that received the item.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The producer/consumer collections.
+
+
+
+ Attempts to take an item from any of a number of producer/consumer collections. The operation "fails" if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The producer/consumer collections.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The array of producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The array of producer/consumer collections.
+ A cancellation token that can be used to abort the take operation.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails.
+
+ The array of producer/consumer collections.
+
+
+
+ Takes an item from any of a number of producer/consumer collections. Throws if all the producer/consumer collections have completed adding and are empty, or if any take operation on an underlying collection fails. This method may block the calling thread.
+
+ The array of producer/consumer collections.
+
+
+
+ A progress implementation that sends progress reports to a producer/consumer collection.
+
+ The type of progress value.
+
+
+
+ The producer/consumer collection that receives progress reports.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The producer/consumer collection that receives progress reports.
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/wpa81/Nito.AsyncEx.Enlightenment.dll b/packages/Nito.AsyncEx.4.0.1/lib/wpa81/Nito.AsyncEx.Enlightenment.dll
new file mode 100644
index 000000000..424f0f3f3
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/wpa81/Nito.AsyncEx.Enlightenment.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/wpa81/Nito.AsyncEx.Enlightenment.xml b/packages/Nito.AsyncEx.4.0.1/lib/wpa81/Nito.AsyncEx.Enlightenment.xml
new file mode 100644
index 000000000..db9ce6e4a
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/wpa81/Nito.AsyncEx.Enlightenment.xml
@@ -0,0 +1,18 @@
+
+
+
+ Nito.AsyncEx.Enlightenment
+
+
+
+
+ Verifies platform enlightenment.
+
+
+
+
+ Returns a value indicating whether the correct platform enlightenment provider has been loaded.
+
+
+
+
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/wpa81/Nito.AsyncEx.dll b/packages/Nito.AsyncEx.4.0.1/lib/wpa81/Nito.AsyncEx.dll
new file mode 100644
index 000000000..e414e7a28
Binary files /dev/null and b/packages/Nito.AsyncEx.4.0.1/lib/wpa81/Nito.AsyncEx.dll differ
diff --git a/packages/Nito.AsyncEx.4.0.1/lib/wpa81/Nito.AsyncEx.xml b/packages/Nito.AsyncEx.4.0.1/lib/wpa81/Nito.AsyncEx.xml
new file mode 100644
index 000000000..d497cca9c
--- /dev/null
+++ b/packages/Nito.AsyncEx.4.0.1/lib/wpa81/Nito.AsyncEx.xml
@@ -0,0 +1,3930 @@
+
+
+
+ Nito.AsyncEx
+
+
+
+
+ An async-compatible auto-reset event.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible auto-reset event.
+
+ Whether the auto-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible auto-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous auto-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately, even if the cancellation token is already signalled. If the wait is canceled, then it will not auto-reset this event. This method may block the calling thread.
+
+ The cancellation token used to cancel this wait.
+
+
+
+ Asynchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately.
+
+
+
+
+ Synchronously waits for this event to be set. If the event is set, this method will auto-reset it and return immediately. This method may block the calling thread.
+
+
+
+
+ Sets the event, atomically completing a task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ An async-compatible barrier.
+
+
+
+
+ Mutex used to control access to other fields.
+
+
+
+
+ The TCS used to signal the current phase.
+
+
+
+
+ The current phase.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ The total number of participants.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The asynchronous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ The synchonous post-phase action, if any. Either this member or may be non-null, but not both.
+
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Creates an async-compatible barrier.
+
+ The number of participants.
+ The post-phase action to execute at the end of every phase.
+
+
+
+ Gets a semi-unique identifier for this asynchronous barrier.
+
+
+
+
+ Gets the current phase of the barrier.
+
+
+
+
+ Gets the number of participants in this barrier.
+
+
+
+
+ Gets the number of participants for this phase that have not yet signalled.
+
+
+
+
+ Starts executing the post-phase action and returns a representing the action.
+
+
+
+
+ Signals completions to this barrier. Returns the task for the current phase, which may already be completed. Returns null if the signal count is greater than the remaining participant count.
+
+ The number of completions to signal.
+ Whether the participants should be removed permanently.
+
+
+
+ Signals the specified number of completions to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+
+
+
+ Signals the specified number of completions to this barrier and synchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of completion signals to send to this barrier.
+ The cancellation token used to cancel the wait. If this signal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Signals a completion to this barrier and asynchronously waits for the phase to complete. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Adds the specified number of participants to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+ The number of participants to add.
+
+
+
+ Adds a participant to the barrier. Returns the current phase. This method may not be called during the post-phase action.
+
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and asynchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+
+
+
+ Removes the specified number of participants from the barrier and synchronously waits for the phase to complete. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The number of participants to remove.
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes the specified number of participants from the barrier. These participants must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+ The number of participants to remove.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and asynchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+
+
+
+ Removes one participant from the barrier and synchronously waits for the phase to complete. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this removal completes the phase and there is no post-phase action, then this token is ignored.
+
+
+
+ Removes one participant from the barrier. This participant must not have signalled the barrier for this phase yet. This method may not be called during the post-phase action.
+
+
+
+
+ An async-compatible condition variable. This type uses Mesa-style semantics (the notifying tasks do not yield).
+
+
+
+
+ The lock associated with this condition variable.
+
+
+
+
+ The queue of waiting tasks.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+ The wait queue used to manage waiters.
+
+
+
+ Creates an async-compatible condition variable associated with an async-compatible lock.
+
+ The lock associated with this condition variable.
+
+
+
+ Gets a semi-unique identifier for this asynchronous condition variable.
+
+
+
+
+ Sends a signal to a single task waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns, even if the method is cancelled.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a signal on this condition variable. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Synchronously waits for a signal on this condition variable. This method may block the calling thread. The associated lock MUST be held when calling this method, and it will still be held when this method returns.
+
+
+
+
+ Provides a context for asynchronous operations. This class is threadsafe.
+
+
+ may only be called once. After returns, the async context should be disposed.
+
+
+
+
+ The queue holding the actions to run.
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The for this .
+
+
+
+
+ The number of outstanding operations, including actions in the queue.
+
+
+
+
+ Initializes a new instance of the class. This is an advanced operation; most people should use one of the static Run methods instead.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous context. This is the same identifier as the context's .
+
+
+
+
+ Increments the outstanding asynchronous operation count.
+
+
+
+
+ Decrements the outstanding asynchronous operation count.
+
+
+
+
+ Queues a task for execution by . If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The task to queue. May not be null.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Disposes all resources used by this class. This method should NOT be called while is executing.
+
+
+
+
+ Executes all queued actions. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from tasks that are supposed to propagate errors.
+
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task. This method will unwrap and propagate errors from the task.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. This method will unwrap and propagate errors from the task proxy.
+
+ The action to execute. May not be null.
+
+
+
+ Queues a task for execution, and begins executing all tasks in the queue. This method returns when all tasks have been completed and the outstanding asynchronous operation count is zero. Returns the result of the task proxy. This method will unwrap and propagate errors from the task proxy.
+
+ The result type of the task.
+ The action to execute. May not be null.
+
+
+
+ Gets the current for this thread, or null if this thread is not currently running in an .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . From inside , this value is always equal to .
+
+
+
+
+ Gets the for this . Be careful with async delegates; you may need to call and to prevent early termination of this .
+
+
+
+
+ The implementation used by .
+
+
+
+
+ The async context.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context.
+
+
+
+ Gets the async context.
+
+
+
+
+ Dispatches an asynchronous message to the async context. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Dispatches an asynchronous message to the async context, and waits for it to complete.
+
+ The delegate to call. May not be null.
+ The object passed to the delegate.
+
+
+
+ Responds to the notification that an operation has started by incrementing the outstanding asynchronous operation count.
+
+
+
+
+ Responds to the notification that an operation has completed by decrementing the outstanding asynchronous operation count.
+
+
+
+
+ Creates a copy of the synchronization context.
+
+ A new object.
+
+
+
+ Returns a hash code for this instance.
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+ Determines whether the specified is equal to this instance. It is considered equal if it refers to the same underlying async context as this instance.
+
+ The to compare with this instance.
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+ A blocking queue.
+
+
+
+
+ The underlying blocking collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a blocking enumerable that removes items from the queue. This enumerable only completes after has been called.
+
+ A blocking enumerable that removes items from the queue.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Attempts to add the item to the queue. If the queue has been marked as complete for adding, this method returns false.
+
+ The item to enqueue.
+ A value indicating whether exceptions on this task should be propagated out of the main loop.
+
+
+
+ Marks the queue as complete for adding, allowing the enumerator returned from to eventually complete. This method may be called several times.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ A task scheduler which schedules tasks to an async context.
+
+
+
+
+ The async context for this task scheduler.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async context for this task scheduler. May not be null.
+
+
+
+ Generates an enumerable of instances currently queued to the scheduler waiting to be executed.
+
+ An enumerable that allows traversal of tasks currently queued to this scheduler.
+
+
+
+ Queues a to the scheduler. If all tasks have been completed and the outstanding asynchronous operation count is zero, then this method has undefined behavior.
+
+ The to be queued.
+
+
+
+ Determines whether the provided can be executed synchronously in this call, and if it can, executes it.
+
+ The to be executed.
+ A Boolean denoting whether or not task has previously been queued. If this parameter is True, then the task may have been previously queued (scheduled); if False, then the task is known not to have been queued, and this call is being made in order to execute the task inline without queuing it.
+ A Boolean value indicating whether the task was executed inline.
+ The was already executed.
+
+
+
+ Indicates the maximum concurrency level this is able to support.
+
+
+
+
+ Exposes the base method.
+
+ The task to attempt to execute.
+
+
+
+ A thread that executes actions within an .
+
+
+
+
+ The child thread.
+
+
+
+
+ The asynchronous context executed by the child thread.
+
+
+
+
+ A flag used to ensure we only call once during complex join/dispose operations.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands.
+
+
+
+
+ Initializes a new instance of the class, creating a child thread waiting for commands. If is true, then the child thread is an STA thread (throwing if the platform does not support STA threads).
+
+
+
+
+ Gets the executed by this thread.
+
+
+
+
+ Permits the thread to exit, if we have not already done so.
+
+
+
+
+ Requests the thread to exit and returns a task representing the exit of the thread. The thread will exit when all outstanding asynchronous operations complete.
+
+
+
+
+ Requests the thread to exit.
+
+
+
+
+ Gets the for this thread, which can be used to schedule work to this thread.
+
+
+
+
+ An async-compatible countdown event.
+
+
+
+
+ The TCS used to signal this event.
+
+
+
+
+ The remaining count on this event.
+
+
+
+
+ Creates an async-compatible countdown event.
+
+ The number of signals this event will need before it becomes set. Must be greater than zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous countdown event.
+
+
+
+
+ Gets the current number of remaining signals before this event becomes set.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Attempts to modify the current count by the specified amount. This method returns false if the new current count value would be invalid, or if the count has already reached zero.
+
+ The amount to change the current count. This may be positive or negative, but not zero.
+
+
+
+ Attempts to add the specified value to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method returns false if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method returns false if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Attempts to add the specified value to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to add one to the current count. This method throws if the count is already at zero or if the new count would be greater than .
+
+
+
+
+ Attempts to subtract the specified value from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+ The amount to change the current count. This must be greater than zero.
+
+
+
+ Attempts to subtract one from the current count. This method throws if the count is already at zero or if the new count would be less than zero.
+
+
+
+
+ Provides asynchronous wrappers.
+
+ The type of the result of the asychronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method. May not be null.
+ The end method. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap. May not be null.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event.
+ The event args.
+
+
+
+ Gets a task that will complete the next time an event is raised. The event type must follow the standard void EventHandlerType(object, TResult) pattern. Be mindful of race conditions (i.e., if the event is raised immediately before this method is called, your task may never complete).
+
+ The object that publishes the event. May not be null.
+ The name of the event. May not be null.
+ The event args.
+
+
+
+ Manages the subscription to an event on a target object, triggering a task (and unsubscribing) when the event is raised.
+
+ The type of event arguments passed to the event.
+
+
+
+ The source for our task, which is returned to the user.
+
+
+
+
+ The subscription to the event.
+
+
+
+
+ The object that publishes the event.
+
+
+
+
+ The event to which we subscribe.
+
+
+
+
+ Subscribes to the specified event.
+
+ The object that publishes the event.
+ The event to which we subscribe.
+
+
+
+ Gets the task that is completed when the event is raised.
+
+
+
+
+ Private method that handles event completion. Do not call this method; it is public to avoid security problems when reflecting.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ The result of the asynchronous operation.
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+ The result of the asynchronous operation.
+
+
+
+ Provides asynchronous wrappers.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The begin method.
+ The end method.
+
+
+
+
+ Wraps a into the Begin method of an APM pattern.
+
+ The task to wrap.
+ The callback method passed into the Begin method of the APM pattern.
+ The state passed into the Begin method of the APM pattern.
+ The asynchronous operation, to be returned by the Begin method of the APM pattern.
+
+
+
+ Wraps a into the End method of an APM pattern.
+
+ The asynchronous operation returned by the matching Begin method of this APM pattern.
+ The result of the asynchronous operation, to be returned by the End method of the APM pattern.
+
+
+
+ Wraps a with a . When the is signalled, the returned is completed. If the handle is already signalled, this method acts synchronously.
+
+ The to observe.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the handle is already signalled or the timeout is zero, this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+
+
+
+ Wraps a with a . If the is signalled, the returned task is (successfully) completed. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled or the cancellation token is already cancelled, this method acts synchronously.
+
+ The to observe.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a with a . If the is signalled, the returned task is completed with a true result. If the observation times out, the returned task is completed with a false result. If the observation is cancelled, the returned task is cancelled. If the handle is already signalled, the timeout is zero, or the cancellation token is already cancelled, then this method acts synchronously.
+
+ The to observe.
+ The timeout after which the is no longer observed.
+ The cancellation token that cancels observing the .
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The begin method.
+ The end method.
+ Argument 0.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+
+
+
+
+ Wraps a begin/end asynchronous method.
+
+ The type of argument 0.
+ The type of argument 1.
+ The type of argument 2.
+ The type of argument 3.
+ The type of argument 4.
+ The type of argument 5.
+ The type of argument 6.
+ The type of argument 7.
+ The type of argument 8.
+ The type of argument 9.
+ The type of argument 10.
+ The type of argument 11.
+ The type of argument 12.
+ The type of argument 13.
+ The begin method.
+ The end method.
+ Argument 0.
+ Argument 1.
+ Argument 2.
+ Argument 3.
+ Argument 4.
+ Argument 5.
+ Argument 6.
+ Argument 7.
+ Argument 8.
+ Argument 9.
+ Argument 10.
+ Argument 11.
+ Argument 12.
+ Argument 13.
+
+
+
+
+ Provides support for asynchronous lazy initialization. This type is fully threadsafe.
+
+ The type of object that is being asynchronously initialized.
+
+
+
+ The underlying lazy task.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Initializes a new instance of the class.
+
+ The asynchronous delegate that is invoked on a background thread to produce the value when it is needed. May not be null.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lazy instance.
+
+
+
+
+ Whether the asynchronous factory method has started. This is initially false and becomes true when this instance is awaited or after is called.
+
+
+
+
+ Asynchronous infrastructure support. This method permits instances of to be await'ed.
+
+
+
+
+ Starts the asynchronous initialization, if it has not already started.
+
+
+
+
+ A mutual exclusion lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ Whether the lock is taken by a task.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock.
+
+
+
+
+ A task that is completed with the key object for this lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock.
+
+
+
+
+ Creates a new async-compatible mutual exclusion lock using the specified wait queue.
+
+ The wait queue used to manage waiters.
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+
+
+
+ Asynchronously acquires the lock. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+
+
+
+ Releases the lock.
+
+
+
+
+ The disposable which releases the lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ An async-compatible manual-reset event.
+
+
+
+
+ The object used for synchronization.
+
+
+
+
+ The current state of the event.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ Creates an async-compatible manual-reset event.
+
+ Whether the manual-reset event is initially set or unset.
+
+
+
+ Creates an async-compatible manual-reset event that is initially unset.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous manual-reset event.
+
+
+
+
+ Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
+
+
+
+
+ Asynchronously waits for this event to be set.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+
+
+
+ Synchronously waits for this event to be set. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
+
+
+
+ Sets the event, atomically completing every task returned by . If the event is already set, this method does nothing.
+
+
+
+
+ Resets the event. If the event is already reset, this method does nothing.
+
+
+
+
+ An async-compatible monitor.
+
+
+
+
+ The lock.
+
+
+
+
+ The condition variable.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Constructs a new monitor.
+
+
+
+
+ Gets a semi-unique identifier for this monitor.
+
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Synchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the enter. If this is already set, then this method will attempt to enter the monitor immediately (succeeding if the monitor is currently available).
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed.
+
+ A disposable that leaves the monitor when disposed.
+
+
+
+ Asynchronously enters the monitor. Returns a disposable that leaves the monitor when disposed. This method may block the calling thread.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns, even if the method is cancelled. This method internally will leave the monitor while waiting for a notification.
+
+ The cancellation signal used to cancel this wait.
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Asynchronously waits for a pulse signal on this monitor. This method may block the calling thread. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns. This method internally will leave the monitor while waiting for a notification.
+
+
+
+
+ Sends a signal to a single task waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ Sends a signal to all tasks waiting on this monitor. The monitor MUST already be entered when calling this method, and it will still be entered when this method returns.
+
+
+
+
+ An async-compatible producer/consumer queue.
+
+ The type of elements contained in the queue.
+
+
+
+ The underlying queue.
+
+
+
+
+ The maximum number of elements allowed in the queue.
+
+
+
+
+ The mutual-exclusion lock protecting the queue.
+
+
+
+
+ A condition variable that is signalled when the queue is not full.
+
+
+
+
+ A condition variable that is signalled when the queue is completed or not empty.
+
+
+
+
+ A cancellation token source that is canceled when the queue is marked completed for adding.
+
+
+
+
+ A cached result that is common when calling .
+
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements and a maximum element count.
+
+ The initial elements to place in the queue.
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue with the specified initial elements.
+
+ The initial elements to place in the queue.
+
+
+
+ Creates a new async-compatible producer/consumer queue with a maximum element count.
+
+ The maximum element count. This must be greater than zero.
+
+
+
+ Creates a new async-compatible producer/consumer queue.
+
+
+
+
+ Whether the queue is empty.
+
+
+
+
+ Whether the queue is full.
+
+
+
+
+ Releases resources held by this instance. After disposal, any use of this instance is undefined.
+
+
+
+
+ Asynchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Synchronously marks the producer/consumer queue as complete for adding.
+
+
+
+
+ Attempts to enqueue an item.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related enqueue operations. May be null if this is the only enqueue operation.
+
+
+
+ Attempts to enqueue an item. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Attempts to enqueue an item to the producer/consumer queue. Returns false if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding. This method may block the calling thread.
+
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+
+
+
+ Enqueues an item to the producer/consumer queue. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Enqueues an item to the producer/consumer queue. This method may block the calling thread. Throws if the producer/consumer queue has completed adding.
+
+ The item to enqueue.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+ A cancellation token that can be used to abort the asynchronous wait.
+
+
+
+ Asynchronously waits until an item is available to dequeue. Returns false if the producer/consumer queue has completed adding and there are no more items.
+
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+ A cancellation token that can be used to abort the synchronous enumeration.
+
+
+
+ Provides a (synchronous) consuming enumerable for items in the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item.
+
+ A cancellation token that can be used to abort the dequeue operation. If is not null, then this token must include signals from the object.
+ A synchronization object used to cancel related dequeue operations. May be null if this is the only dequeue operation.
+
+
+
+ Attempts to dequeue an item. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue.
+
+
+
+
+ Attempts to dequeue an item from the producer/consumer queue. This method may block the calling thread.
+
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ Dequeues an item from the producer/consumer queue. Returns the dequeued item. This method may block the calling thread. Throws if the producer/consumer queue has completed adding and is empty.
+
+ The dequeued item.
+
+
+
+ The result of a TryDequeue, DequeueFromAny, or TryDequeueFromAny operation.
+
+
+
+
+ The queue from which the item was dequeued, or null if the operation failed.
+
+
+
+
+ Whether the operation was successful. This is true if and only if is not null.
+
+
+
+
+ The dequeued item. This is only valid if is not null.
+
+
+
+
+ Provides methods for working on multiple instances.
+
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to enqueue an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Returns null if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ A cancellation token that can be used to abort the enqueue operation.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Enqueues an item to any of a number of producer/consumer queues. Returns the producer/consumer queue that received the item. Throws if all producer/consumer queues have completed adding. This method may block the calling thread.
+
+ The producer/consumer queues.
+ The item to enqueue.
+ The producer/consumer queue that received the item.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Attempts to dequeue an item from any of a number of producer/consumer queues. The operation "fails" if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+ A cancellation token that can be used to abort the dequeue operation.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty.
+
+ The producer/consumer queues.
+
+
+
+ Dequeues an item from any of a number of producer/consumer queues. Throws if all the producer/consumer queues have completed adding and are empty. This method may block the calling thread.
+
+ The producer/consumer queues.
+
+
+
+ A reader/writer lock that is compatible with async. Note that this lock is not recursive!
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as writers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the lock as upgradeable readers.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to upgrade a reader lock to a writer lock.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The current upgradeable reader lock key, if any. If this is not null, then there is an upgradeable reader lock held.
+
+
+
+
+ Number of reader locks held (including an upgradeable reader lock, if applicable); -1 if a writer lock is held; 0 if no locks are held.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ A task that is completed with the reader key object for this lock.
+
+
+
+
+ A task that is completed with the writer key object for this lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Creates a new async-compatible reader/writer lock.
+
+
+
+
+ Gets a semi-unique identifier for this asynchronous lock.
+
+
+
+
+ Applies a continuation to the task that will call if the task is canceled. This method may not be called while holding the sync lock.
+
+ The task to observe for cancellation.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a writer. Returns a disposable that releases the lock when disposed. This method may block the calling thread.
+
+ A disposable that releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the lock. If this is already set, then this method will attempt to take the lock immediately (succeeding if the lock is currently available).
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Synchronously acquires the lock as a reader with the option to upgrade. Returns a key that can be used to upgrade and downgrade the lock, and releases the lock when disposed. This method may block the calling thread.
+
+ A key that can be used to upgrade and downgrade this lock, and releases the lock when disposed.
+
+
+
+ Asynchronously upgrades a reader lock to a writer lock. This method assumes the sync lock is already held.
+
+
+
+
+ Downgrades a writer lock to a reader lock. This method assumes the sync lock is already held.
+
+
+
+
+ Grants lock(s) to waiting tasks. This method assumes the sync lock is already held.
+
+
+
+
+ Releases the lock as a reader.
+
+
+
+
+ Releases the lock as a writer.
+
+
+
+
+ Releases the lock as an upgradeable reader.
+
+
+
+
+ The disposable which releases the reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which releases the writer lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which manages the upgradeable reader lock.
+
+
+
+
+ The lock to release.
+
+
+
+
+ The task doing the upgrade.
+
+
+
+
+ A task that is completed with the upgrade key object for this key.
+
+
+
+
+ Creates the key for a lock.
+
+ The lock to release. May not be null.
+
+
+
+ Gets a value indicating whether this lock has been upgraded to a write lock.
+
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+ The cancellation token used to cancel the upgrade. If this is already set, then this method will attempt to upgrade immediately (succeeding if the lock is currently available).
+
+
+
+ Upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed.
+
+
+
+
+ Synchronously upgrades the reader lock to a writer lock. Returns a disposable that downgrades the writer lock to a reader lock when disposed. This method may block the calling thread.
+
+
+
+
+ Downgrades the writer lock to a reader lock.
+
+
+
+
+ Release the lock.
+
+
+
+
+ The disposable which downgrades an upgradeable reader key.
+
+
+
+
+ The upgradeable reader key to downgrade.
+
+
+
+
+ Creates the upgrade key for an upgradeable reader key.
+
+ The upgradeable reader key to downgrade. May not be null.
+
+
+
+ Downgrade the upgradeable reader key.
+
+
+
+
+ An async-compatible semaphore. Alternatively, you could use SemaphoreSlim on .NET 4.5 / Windows Store.
+
+
+
+
+ The queue of TCSs that other tasks are awaiting to acquire the semaphore.
+
+
+
+
+ The number of waits that will be immediately granted.
+
+
+
+
+ The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
+
+
+
+
+ The object used for mutual exclusion.
+
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+ The wait queue used to manage waiters.
+
+
+
+ Creates a new async-compatible semaphore with the specified initial count.
+
+ The initial count for this semaphore. This must be greater than or equal to zero.
+
+
+
+ Gets a semi-unique identifier for this asynchronous semaphore.
+
+
+
+
+ Gets the number of slots currently available on this semaphore.
+
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+ The cancellation token used to cancel the wait. If this is already set, then this method will attempt to take the slot immediately (succeeding if a slot is currently available).
+
+
+
+ Asynchronously waits for a slot in the semaphore to be available.
+
+
+
+
+ Synchronously waits for a slot in the semaphore to be available. This method may block the calling thread.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ Releases the semaphore.
+
+
+
+
+ A collection of cancelable instances. Implementations must be threadsafe and must work correctly if the caller is holding a lock.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ Gets whether the queue is empty.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. The returned task must support both synchronous and asynchronous waits.
+
+ The queued task.
+
+
+
+ Removes a single entry in the wait queue. Returns a disposable that completes that entry.
+
+ The result used to complete the wait queue entry. If this isn't needed, use default(T).
+
+
+
+ Removes all entries in the wait queue. Returns a disposable that completes all entries.
+
+ The result used to complete the wait queue entries. If this isn't needed, use default(T).
+
+
+
+ Attempts to remove an entry from the wait queue. Returns a disposable that cancels the entry.
+
+ The task to cancel.
+ A value indicating whether the entry was found and canceled.
+
+
+
+ Removes all entries from the wait queue. Returns a disposable that cancels all entries.
+
+
+
+
+ Provides extension methods for wait queues.
+
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ Creates a new entry and queues it to this wait queue. If the cancellation token is already canceled, this method immediately returns a canceled task without modifying the wait queue.
+
+ The wait queue.
+ A synchronization object taken while cancelling the entry.
+ The token used to cancel the wait.
+ The queued task.
+
+
+
+ The default wait queue implementation, which uses a double-ended queue.
+
+ The type of the results. If this isn't needed, use .
+
+
+
+ An awaitable wrapper around a task whose result is disposable. The wrapper is not disposable, so this prevents usage errors like "using (MyAsync())" when the appropriate usage should be "using (await MyAsync())".
+
+ The type of the result of the underlying task.
+
+
+
+ The underlying task.
+
+
+
+
+ Initializes a new awaitable wrapper around the specified task.
+
+ The underlying task to wrap.
+
+
+
+ Returns the underlying task.
+
+
+
+
+ Implicit conversion to the underlying task.
+
+ The awaitable wrapper.
+
+
+
+ Infrastructure. Returns the task awaiter for the underlying task.
+
+
+
+
+ Infrastructure. Returns a configured task awaiter for the underlying task.
+
+ Whether to attempt to marshal the continuation back to the captured context.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Returns a that is canceled when this is canceled. This method will leak resources if the cancellation token is long-lived; use for a similar approach with proper resource management.
+
+ The to monitor.
+ A that is canceled when this is canceled.
+
+
+
+ Returns a which holds the task for this cancellation token.
+
+ The cancellation token to observe.
+
+
+
+ Holds the task for a cancellation token, as well as the token registration. The registration is disposed when this instance is disposed.
+
+
+
+
+ The cancellation token registration, if any. This is null if the registration was not necessary.
+
+
+
+
+ Creates a task for the specified cancellation token, registering with the token if necessary.
+
+ The cancellation token to observe.
+
+
+
+ Gets the task for the source cancellation token.
+
+
+
+
+ Disposes the cancellation token registration, if any. Note that this may cause to never complete.
+
+
+
+
+ Helper methods for cancellation tokens.
+
+
+
+
+ Initializes the static members.
+
+
+
+
+ Gets , a cancellation token that is never canceled.
+
+
+
+
+ Gets a cancellation token that is already canceled.
+
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Creates a cancellation token that is canceled after the due time.
+
+ The due time after which to cancel the token.
+ A cancellation token that is canceled after the due time.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Reduces a set of cancellation tokens by removing any cancellation tokens that cannot be canceled. If any tokens are already canceled, the returned token will be canceled.
+
+ The cancellation tokens to reduce.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+ The options to use for the task continuation.
+
+
+
+ Creates a cancellation token that is canceled when the provided completes.
+
+ The task to observe.
+
+
+
+ Manages the deferrals for a "command" event that may have asynchonous handlers.
+
+
+
+
+ The countdown event, triggered when all deferrals have completed. This is null if there are no deferrals.
+
+
+
+
+ Gets a deferral. The deferral is complete when disposed.
+
+ The deferral.
+
+
+
+ Notifies the manager that all deferrals have been requested, and returns a task that is completed when all deferrals have completed.
+
+ A task that is completed when all deferrals have completed.
+
+
+
+ A deferral.
+
+
+
+
+ The countdown event of the deferral manager.
+
+
+
+
+ Creates a new deferral referencing the countdown event of the deferral manager.
+
+ The countdown event of the deferral manager.
+
+
+
+ Completes the deferral.
+
+
+
+
+ Provides helper (non-extension) methods dealing with exceptions.
+
+
+
+
+ Attempts to prepare the exception for re-throwing by preserving the stack trace. The returned exception should be immediately thrown.
+
+ The exception. May not be null.
+ The that was passed into this method.
+
+
+
+ Allocates Ids for instances on demand. 0 is an invalid/unassigned Id. Ids may be non-unique in very long-running systems. This is similar to the Id system used by and .
+
+ The type for which ids are generated.
+
+
+
+ The last id generated for this type. This is 0 if no ids have been generated.
+
+
+
+
+ Returns the id, allocating it if necessary.
+
+ A reference to the field containing the id.
+
+
+
+ A that may or may not also reference its own . Instances of this type should always be disposed.
+
+
+
+
+ The , if any. If this is not null, then is _cts.Token.
+
+
+
+
+ The . If is not null, then this is _cts.Token.
+
+
+
+
+ Creates a normalized cancellation token that can never be canceled.
+
+
+
+
+ Creates a normalized cancellation token from a . is set to the property of .
+
+ The source for this token.
+
+
+
+ Creates a normalized cancellation token from a . is set to .
+
+ The source for this token.
+
+
+
+ Releases any resources used by this normalized cancellation token.
+
+
+
+
+ Gets the for this normalized cancellation token.
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets a task that completes successfully when completes (successfully, faulted, or canceled). This property never changes and is never null.
+
+
+
+
+ Gets the current task status. This property raises a notification when the task completes.
+
+
+
+
+ Gets whether the task has completed. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task is busy (not completed). This property raises a notification when the value changes to false.
+
+
+
+
+ Gets whether the task has completed successfully. This property raises a notification when the value changes to true.
+
+
+
+
+ Gets whether the task has been canceled. This property raises a notification only if the task is canceled (i.e., if the value changes to true).
+
+
+
+
+ Gets whether the task has faulted. This property raises a notification only if the task faults (i.e., if the value changes to true).
+
+
+
+
+ Gets the wrapped faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Gets the error message for the original faulting exception for the task. Returns null if the task is not faulted. This property raises a notification only if the task faults (i.e., if the value changes to non-null).
+
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Gets the task being watched. This property never changes and is never null.
+
+
+
+
+ Gets the result of the task. Returns the default value of if the task has not completed successfully. This property raises a notification when the task completes successfully.
+
+
+
+
+ Factory for task completion notifiers.
+
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Creates a new task notifier watching the specified task.
+
+ The type of the task result.
+ The task to watch.
+ A new task notifier watching the specified task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Executes the specified asynchronous code and creates a new task notifier watching the returned task.
+
+ The asynchronous code to execute.
+ A new task notifier watching the returned task.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ Watches a task and raises property-changed notifications when the task completes.
+
+ The type of the task result.
+
+
+
+ Initializes a task notifier watching the specified task.
+
+ The task to watch.
+
+
+
+ The source (controller) of a "pause token", which can be used to cooperatively pause and unpause operations.
+
+
+
+
+ The MRE that manages the "pause" logic. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether or not this source (and its tokens) are in the paused state.
+
+
+
+
+ Gets a pause token controlled by this source.
+
+
+
+
+ A type that allows an operation to be cooperatively paused.
+
+
+
+
+ The MRE that manages the "pause" logic, or null if this token can never be paused. When the MRE is set, the token is not paused; when the MRE is not set, the token is paused.
+
+
+
+
+ Whether this token can ever possibly be paused.
+
+
+
+
+ Whether or not this token is in the paused state.
+
+
+
+
+ Asynchronously waits until the pause token is not paused.
+
+
+
+
+ Asynchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ Synchronously waits until the pause token is not paused.
+
+
+
+
+ Synchronously waits until the pause token is not paused, or until this wait is canceled by the cancellation token.
+
+ The cancellation token to observe. If the token is already canceled, this method will first check if the pause token is unpaused, and will return without an exception in that case.
+
+
+
+ A progress implementation that stores progress updates in a property. If this instance is created on a UI thread, its property is suitable for data binding.
+
+ The type of progress value.
+
+
+
+ The context of the thread that created this instance.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The initial progress value.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The last reported progress value.
+
+
+
+
+ Occurs when the property value changes.
+
+
+
+
+ Provides helper types for .
+
+
+
+
+ Retrieves the current synchronization context, or the default synchronization context if there is no current synchronization context.
+
+
+
+
+ Utility class for temporarily switching implementations.
+
+
+
+
+ The previous .
+
+
+
+
+ Whether this object has already been disposed.
+
+
+
+
+ Initializes a new instance of the class, installing the new .
+
+ The new .
+
+
+
+ Restores the old .
+
+
+
+
+ Provides synchronous extension methods for tasks.
+
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ The result of the task.
+
+
+
+ Waits for the task to complete, unwrapping any exceptions.
+
+ The type of the result of the task.
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The result of the task.
+ The was cancelled before the completed, or the raised an .
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+
+
+
+ Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
+
+ The task. May not be null.
+ A cancellation token to observe while waiting for the task to complete.
+ The was cancelled before the completed.
+
+
+
+ Represents the producer side of a unbound to a delegate, providing access to the consumer side through the property.
+
+
+
+
+ The underlying TCS.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified state.
+
+ The state to use as the underlying 's .
+
+
+
+ Initializes a new instance of the class with the specified options.
+
+ The options to use when creating the underlying .
+
+
+
+ Initializes a new instance of the class with the specified state and options.
+
+ The state to use as the underlying 's .
+ The options to use when creating the underlying .
+
+
+
+ Gets the created by this .
+
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ The underlying has already been completed.
+
+
+
+ Transitions the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The exception to bind to this . May not be null.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ The collection of exceptions to bind to this . May not be null or contain null elements.
+ true if the operation was successful; otherwise, false.
+
+
+
+ Transitions the underlying into the state.
+
+ The underlying has already been completed.
+
+
+
+ Attempts to transition the underlying into the state.
+
+ true if the operation was successful; otherwise, false.
+
+
+
+ Provides extension methods for .
+
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the target asynchronous operation.
+ The type of the result of the source asynchronous operation.
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ The delegate used to retrieve the result. This is only invoked if indicates successful completion. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The task. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a , propagating the completion of .
+
+ The task completion source. May not be null.
+ The event arguments passed to the completion event. May not be null.
+ true if this method completed the task completion source; false if it was already completed.
+
+
+
+ Attempts to complete a with the specified value, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The result of the asynchronous operation.
+
+
+
+ Attempts to complete a , forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as canceled, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exception to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The type of the result of the asynchronous operation.
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Attempts to complete a as faulted, forcing all continuations onto a threadpool thread even if they specified ExecuteSynchronously.
+
+ The task completion source. May not be null.
+ The exceptions to bind to the task.
+
+
+
+ Provides completed task constants.
+
+
+
+
+ A task that has been completed with the value true.
+
+
+
+
+ A task that has been completed with the value false.
+
+
+
+
+ A task that has been completed with the value 0.
+
+
+
+
+ A task that has been completed with the value -1.
+
+
+
+
+ A that has been completed.
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides completed task constants.
+
+ The type of the task result.
+
+
+
+ A task that has been completed with the default value of .
+
+
+
+
+ A that will never complete.
+
+
+
+
+ A task that has been canceled.
+
+
+
+
+ Provides extension methods for tasks.
+
+
+
+
+ Creates a new array of tasks which complete in order.
+
+ The type of the results of the tasks.
+ The tasks to order by completion.
+
+
+
+ Provides extension methods for task factories.
+
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ Queues work to the task factory and returns a proxy representing that work.
+
+ The . May not be null.
+ The action delegate to execute. May not be null.
+ The started task.
+
+
+
+ A double-ended queue (deque), which provides O(1) indexed access, O(1) removals from the front and back, amortized O(1) insertions to the front and back, and O(N) insertions and removals anywhere else (with the operations getting slower as the index approaches the middle).
+
+ The type of elements contained in the deque.
+
+
+
+ The default capacity.
+
+
+
+
+ The circular buffer that holds the view.
+
+
+
+
+ The offset into where the view begins.
+
+
+
+
+ Initializes a new instance of the class with the specified capacity.
+
+ The initial capacity. Must be greater than 0.
+
+
+
+ Initializes a new instance of the class with the elements from the specified collection.
+
+ The collection.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a value indicating whether this list is read-only. This implementation always returns false.
+
+ true if this list is read-only; otherwise, false.
+
+
+
+ Gets or sets the item at the specified index.
+
+ The index of the item to get or set.
+ is not a valid index in this list.
+ This property is set and the list is read-only.
+
+
+
+ Inserts an item to this list at the specified index.
+
+ The zero-based index at which should be inserted.
+ The object to insert into this list.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+ is not a valid index in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Determines the index of a specific item in this list.
+
+ The object to locate in this list.
+ The index of if found in this list; otherwise, -1.
+
+
+
+ Adds an item to the end of this list.
+
+ The object to add to this list.
+
+ This list is read-only.
+
+
+
+
+ Determines whether this list contains a specific value.
+
+ The object to locate in this list.
+
+ true if is found in this list; otherwise, false.
+
+
+
+
+ Copies the elements of this list to an , starting at a particular index.
+
+ The one-dimensional that is the destination of the elements copied from this slice. The must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+ is null.
+
+
+ is less than 0.
+
+
+ is equal to or greater than the length of .
+ -or-
+ The number of elements in the source is greater than the available space from to the end of the destination .
+
+
+
+
+ Removes the first occurrence of a specific object from this list.
+
+ The object to remove from this list.
+
+ true if was successfully removed from this list; otherwise, false. This method also returns false if is not found in this list.
+
+
+ This list is read-only.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Checks the argument to see if it refers to a valid insertion point in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Checks the argument to see if it refers to an existing element in a source of a given length.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into the source.
+ is not a valid index to an existing element for the source.
+
+
+
+ Checks the and arguments for validity when applied to a source of a given length. Allows 0-element ranges, including a 0-element range at the end of the source.
+
+ The length of the source. This parameter is not checked for validity.
+ The index into source at which the range begins.
+ The number of elements in the range.
+ Either or is less than 0.
+ The range [offset, offset + count) is not within the range [0, sourceLength).
+
+
+
+ Gets a value indicating whether this instance is empty.
+
+
+
+
+ Gets a value indicating whether this instance is at full capacity.
+
+
+
+
+ Gets a value indicating whether the buffer is "split" (meaning the beginning of the view is at a later index in than the end).
+
+
+
+
+ Gets or sets the capacity for this deque. This value must always be greater than zero, and this property cannot be set to a value less than .
+
+ Capacity cannot be set to a value less than .
+
+
+
+ Gets the number of elements contained in this deque.
+
+ The number of elements contained in this deque.
+
+
+
+ Applies the offset to , resulting in a buffer index.
+
+ The deque index.
+ The buffer index.
+
+
+
+ Gets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element at the specified index.
+
+
+
+ Sets an element at the specified view index.
+
+ The zero-based view index of the element to get. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Inserts an element at the specified view index.
+
+ The zero-based view index at which the element should be inserted. This index is guaranteed to be valid.
+ The element to store in the list.
+
+
+
+ Removes an element at the specified view index.
+
+ The zero-based view index of the element to remove. This index is guaranteed to be valid.
+
+
+
+ Increments by using modulo- arithmetic.
+
+ The value by which to increase . May not be negative.
+ The value of after it was incremented.
+
+
+
+ Decrements by using modulo- arithmetic.
+
+ The value by which to reduce . May not be negative or greater than .
+ The value of before it was decremented.
+
+
+
+ Inserts a single element to the back of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Inserts a single element to the front of the view. must be false when this method is called.
+
+ The element to insert.
+
+
+
+ Removes and returns the last element in the view. must be false when this method is called.
+
+ The former last element.
+
+
+
+ Removes and returns the first element in the view. must be false when this method is called.
+
+ The former first element.
+
+
+
+ Inserts a range of elements into the view.
+
+ The index into the view at which the elements are to be inserted.
+ The elements to insert.
+ The number of elements in . Must be greater than zero, and the sum of and must be less than or equal to .
+
+
+
+ Removes a range of elements from the view.
+
+ The index into the view at which the range begins.
+ The number of elements in the range. This must be greater than 0 and less than or equal to .
+
+
+
+ Doubles the capacity if necessary to make room for one more element. When this method returns, is false.
+
+
+
+
+ Inserts a single element at the back of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a single element at the front of this deque.
+
+ The element to insert.
+
+
+
+ Inserts a collection of elements into this deque.
+
+ The index at which the collection is inserted.
+ The collection of elements to insert.
+ is not a valid index to an insertion point for the source.
+
+
+
+ Removes a range of elements from this deque.
+
+ The index into the deque at which the range begins.
+ The number of elements to remove.
+ Either or is less than 0.
+ The range [, + ) is not within the range [0, ).
+
+
+
+ Removes and returns the last element of this deque.
+
+ The former last element.
+ The deque is empty.
+
+
+
+ Removes and returns the first element of this deque.
+
+ The former first element.
+ The deque is empty.
+
+
+
+ Removes all items from this deque.
+
+
+
+