</AssemblyVersion>
  </AssemblyInfo>
  <Base>
    <BaseTypeName>System.Object</BaseTypeName>
  </Base>
  <Interfaces />
  <Docs>
    <summary>Represents the producer side of a <see cref="T:System.Threading.Tasks.Task" /> unbound to a delegate, providing access to the consumer side through the <see cref="T:System.Threading.Tasks.Task" /> property.</summary>
    <remarks>
      <format type="text/markdown"><![CDATA[

## Remarks

 It is often the case that a <xref:System.Threading.Tasks.Task> is desired to represent another asynchronous operation.
 <xref:System.Threading.Tasks.TaskCompletionSource> is provided for this purpose. It enables the creation of a task that can be handed out to consumers, and those consumers can use the members of the task as they would any other. However, unlike most tasks, the state of a task created by a <xref:System.Threading.Tasks.TaskCompletionSource> is controlled explicitly by the methods on <xref:System.Threading.Tasks.TaskCompletionSource>. This enables the completion of the external asynchronous operation to be propagated to the underlying `Task`. The separation also ensures that consumers are not able to transition the state without access to the corresponding <xref:System.Threading.Tasks.TaskCompletionSource>.
  All members of <xref:System.Threading.Tasks.TaskCompletionSource> are thread-safe and may be used from multiple threads concurrently.
 

          ]]></format>
    </remarks>
  </Docs>
  <Members>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public TaskCompletionSource ();" />
      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
      <MemberSignature Language="DocId" Value="M:System.Threading.Tasks.TaskCompletionSource.#ctor" />
      <MemberSignature Language="VB.NET" Value="Public Sub New ()" />
      <MemberSignature Language="C++ CLI" Value="public:&#xA; TaskCompletionSource();" />
      <MemberType>Constructor</MemberType>
      <AssemblyInfo>
        