Browse Source

Simplify some code.

Bart De Smet 5 years ago
parent
commit
bd195d0c98

+ 9 - 25
AsyncRx.NET/System.Reactive.Async.Concurrency/System/Reactive/Concurrency/AsyncScheduler.cs

@@ -10,15 +10,7 @@ namespace System.Reactive.Concurrency
 {
     public static class AsyncScheduler
     {
-        public static IAwaitable RendezVous(this IAsyncScheduler scheduler)
-        {
-            if (scheduler == null)
-                throw new ArgumentNullException(nameof(scheduler));
-
-            return new RendezVousAwaitable(scheduler, CancellationToken.None);
-        }
-
-        public static IAwaitable RendezVous(this IAsyncScheduler scheduler, CancellationToken token)
+        public static IAwaitable RendezVous(this IAsyncScheduler scheduler, CancellationToken token = default)
         {
             if (scheduler == null)
                 throw new ArgumentNullException(nameof(scheduler));
@@ -28,48 +20,40 @@ namespace System.Reactive.Concurrency
             return new RendezVousAwaitable(scheduler, token);
         }
 
-        public static IAwaitable RendezVous(this Task task, IAsyncScheduler scheduler) => RendezVous(task, scheduler, CancellationToken.None);
-
-        public static IAwaitable RendezVous(this Task task, IAsyncScheduler scheduler, CancellationToken token)
+        public static IAwaitable RendezVous(this Task task, IAsyncScheduler scheduler, CancellationToken token = default)
         {
             if (task == null)
                 throw new ArgumentNullException(nameof(task));
             if (scheduler == null)
                 throw new ArgumentNullException(nameof(scheduler));
 
-            return new TaskAwaitable(task, false, scheduler, token);
+            return new TaskAwaitable(task, continueOnCapturedContext: false, scheduler, token);
         }
 
-        public static IAwaitable<T> RendezVous<T>(this Task<T> task, IAsyncScheduler scheduler) => RendezVous(task, scheduler, CancellationToken.None);
-
-        public static IAwaitable<T> RendezVous<T>(this Task<T> task, IAsyncScheduler scheduler, CancellationToken token)
+        public static IAwaitable<T> RendezVous<T>(this Task<T> task, IAsyncScheduler scheduler, CancellationToken token = default)
         {
             if (task == null)
                 throw new ArgumentNullException(nameof(task));
             if (scheduler == null)
                 throw new ArgumentNullException(nameof(scheduler));
 
-            return new TaskAwaitable<T>(task, false, scheduler, token);
+            return new TaskAwaitable<T>(task, continueOnCapturedContext: false, scheduler, token);
         }
 
-        public static IAwaitable RendezVous(this ValueTask task, IAsyncScheduler scheduler) => RendezVous(task, scheduler, CancellationToken.None);
-
-        public static IAwaitable RendezVous(this ValueTask task, IAsyncScheduler scheduler, CancellationToken token)
+        public static IAwaitable RendezVous(this ValueTask task, IAsyncScheduler scheduler, CancellationToken token = default)
         {
             if (scheduler == null)
                 throw new ArgumentNullException(nameof(scheduler));
 
-            return new ValueTaskAwaitable(task, false, scheduler, token);
+            return new ValueTaskAwaitable(task, continueOnCapturedContext: false, scheduler, token);
         }
 
-        public static IAwaitable<T> RendezVous<T>(this ValueTask<T> task, IAsyncScheduler scheduler) => RendezVous(task, scheduler, CancellationToken.None);
-
-        public static IAwaitable<T> RendezVous<T>(this ValueTask<T> task, IAsyncScheduler scheduler, CancellationToken token)
+        public static IAwaitable<T> RendezVous<T>(this ValueTask<T> task, IAsyncScheduler scheduler, CancellationToken token = default)
         {
             if (scheduler == null)
                 throw new ArgumentNullException(nameof(scheduler));
 
-            return new ValueTaskAwaitable<T>(task, false, scheduler, token);
+            return new ValueTaskAwaitable<T>(task, continueOnCapturedContext: false, scheduler, token);
         }
 
         public static async ValueTask Delay(this IAsyncScheduler scheduler, TimeSpan dueTime, CancellationToken token = default)

+ 3 - 3
AsyncRx.NET/System.Reactive.Async.Core/System/Reactive/AsyncObservableBase.cs

@@ -17,7 +17,7 @@ namespace System.Reactive
 
             var subscription = await SubscribeAsyncCore(autoDetach).ConfigureAwait(false);
 
-            await autoDetach.AssignAsync(subscription);
+            await autoDetach.AssignAsync(subscription).ConfigureAwait(false);
 
             return autoDetach;
         }
@@ -38,7 +38,7 @@ namespace System.Reactive
                 _observer = observer;
             }
 
-            public async Task AssignAsync(IAsyncDisposable subscription)
+            public async ValueTask AssignAsync(IAsyncDisposable subscription)
             {
                 var shouldDispose = false;
 
@@ -184,7 +184,7 @@ namespace System.Reactive
                 }
             }
 
-            private async Task FinishAsync()
+            private async ValueTask FinishAsync()
             {
                 var subscription = default(IAsyncDisposable);