All files
[pithos-ms-client] / trunk / Libraries / ParallelExtensionsExtras / Extensions / CompletedTask.cs
diff --git a/trunk/Libraries/ParallelExtensionsExtras/Extensions/CompletedTask.cs b/trunk/Libraries/ParallelExtensionsExtras/Extensions/CompletedTask.cs
new file mode 100644 (file)
index 0000000..67f94fb
--- /dev/null
@@ -0,0 +1,34 @@
+//--------------------------------------------------------------------------
+// 
+//  Copyright (c) Microsoft Corporation.  All rights reserved. 
+// 
+//  File: CompletedTask.cs
+//
+//--------------------------------------------------------------------------
+
+namespace System.Threading.Tasks
+{
+    /// <summary>Provides access to an already completed task.</summary>
+    /// <remarks>A completed task can be useful for using ContinueWith overloads where there aren't StartNew equivalents.</remarks>
+    public static class CompletedTask
+    {
+        /// <summary>Gets a completed Task.</summary>
+        public readonly static Task Default = CompletedTask<object>.Default;
+    }
+
+    /// <summary>Provides access to an already completed task.</summary>
+    /// <remarks>A completed task can be useful for using ContinueWith overloads where there aren't StartNew equivalents.</remarks>
+    public static class CompletedTask<TResult>
+    {
+        /// <summary>Initializes a Task.</summary>
+        static CompletedTask()
+        {
+            var tcs = new TaskCompletionSource<TResult>();
+            tcs.TrySetResult(default(TResult));
+            Default = tcs.Task;
+        }
+
+        /// <summary>Gets a completed Task.</summary>
+        public readonly static Task<TResult> Default;
+    }
+}