diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2013-01-23 17:44:03 -0800 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2013-01-23 17:44:03 -0800 |
commit | 9cccb5d1976e4753daf0ff12fc93268eaa1f541b (patch) | |
tree | 11f20540559fd13a230bd154052f11304adec13d /samples/OpenIdProviderWebForms/Code/Util.cs | |
parent | f04d5ca8396bdb0d09b0fea4e22d4e96c4fa8ad2 (diff) | |
download | DotNetOpenAuth-9cccb5d1976e4753daf0ff12fc93268eaa1f541b.zip DotNetOpenAuth-9cccb5d1976e4753daf0ff12fc93268eaa1f541b.tar.gz DotNetOpenAuth-9cccb5d1976e4753daf0ff12fc93268eaa1f541b.tar.bz2 |
OpenIdProviderWebForms now builds.
Diffstat (limited to 'samples/OpenIdProviderWebForms/Code/Util.cs')
-rw-r--r-- | samples/OpenIdProviderWebForms/Code/Util.cs | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/samples/OpenIdProviderWebForms/Code/Util.cs b/samples/OpenIdProviderWebForms/Code/Util.cs index deff447..224ec24 100644 --- a/samples/OpenIdProviderWebForms/Code/Util.cs +++ b/samples/OpenIdProviderWebForms/Code/Util.cs @@ -6,11 +6,13 @@ namespace OpenIdProviderWebForms.Code { using System; + using System.Threading; + using System.Threading.Tasks; using System.Web; using DotNetOpenAuth.OpenId; using DotNetOpenAuth.OpenId.Provider; - public class Util { + public static class Util { public static string ExtractUserName(Uri url) { return url.Segments[url.Segments.Length - 1]; } @@ -71,5 +73,33 @@ namespace OpenIdProviderWebForms.Code { HttpContext.Current.Response.Redirect("~/decide.aspx", true); } } + + internal static Task ToApm(this Task task, AsyncCallback callback, object state) { + if (task == null) { + throw new ArgumentNullException("task"); + } + + var tcs = new TaskCompletionSource<object>(state); + task.ContinueWith( + t => { + if (t.IsFaulted) { + tcs.TrySetException(t.Exception.InnerExceptions); + } else if (t.IsCanceled) { + tcs.TrySetCanceled(); + } else { + tcs.TrySetResult(null); + } + + if (callback != null) { + callback(tcs.Task); + } + }, + CancellationToken.None, + TaskContinuationOptions.None, + TaskScheduler.Default); + + return tcs.Task; + } + } }
\ No newline at end of file |