From 8b767b3ccbdbdd98daa19314792b46751680a195 Mon Sep 17 00:00:00 2001 From: neuecc Date: Mon, 25 Dec 2023 18:52:52 +0900 Subject: [PATCH] ObserveON more(not yet completed) --- src/R3/Operators/_Operators.cs | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/R3/Operators/_Operators.cs b/src/R3/Operators/_Operators.cs index a9a6ee54..2d97766b 100644 --- a/src/R3/Operators/_Operators.cs +++ b/src/R3/Operators/_Operators.cs @@ -33,12 +33,38 @@ public static partial class ObservableExtensions // return tasks: // All, Any, Contains, SequenceEqual, IsEmpty, MaxBy, MinBy, ToDictionary, ToLookup, + + + + // ObserveOn extension method + public static Observable ObserveOn(this Observable source, SynchronizationContext? synchronizationContext) + { + if (synchronizationContext == null) + { + return ObserveOn(source, TimeProvider.System); // use ThreadPool instead + } + + return new ObserveOnSynchronizationContext(source, synchronizationContext); + } + + public static Observable ObserveOn(this Observable source, TimeProvider timeProvider) + { + if (timeProvider == TimeProvider.System) + { + return new ObserveOnThreadPool(source); + } + + return new ObserveOnTimeProvider(source, timeProvider); + } + + public static Observable ObserveOn(this Observable source, FrameProvider frameProvider) + { + return new ObserveOnFrameProvider(source, frameProvider); + } } -// ObserveOnFrameProvider -// ObserveOnTimeProvider internal sealed class ObserveOnSynchronizationContext(Observable source, SynchronizationContext synchronizationContext) : Observable {