Skip to content

Commit 9308d79

Browse files
authored
Replace RxApp schedulers with RxSchedulers throughout codebase (#4213)
<!-- Please be sure to read the [Contribute](https://github.com/reactiveui/reactiveui#contribute) section of the README --> **What kind of change does this PR introduce?** <!-- Bug fix, feature, docs update, ... --> Update **What is the current behavior?** <!-- You can also link to an open issue here. --> Using RxApp.MainThreadScheduler and RxApp.TaskpoolScheduler **What is the new behavior?** <!-- If this is a feature change --> Refactors all usages of RxApp.MainThreadScheduler and RxApp.TaskpoolScheduler to use RxSchedulers.MainThreadScheduler and RxSchedulers.TaskpoolScheduler, respectively. Updates documentation comments, registration logic, and all relevant method calls to reference the new RxSchedulers static class. Also removes obsolete dispatcher extension methods from DispatcherObservable.cs and ensures scheduler usage is consistent across all platforms and components. **What might this PR break?** **Please check if the PR fulfills these requirements** - [ ] Tests for the changes have been added (for bug fixes / features) - [ ] Docs have been added / updated (for bug fixes / features) **Other information**:
1 parent c13dfe0 commit 9308d79

38 files changed

+81
-160
lines changed

src/ReactiveUI.Blazor/Registrations.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public void Register(Action<Func<object>, Type> registerFunction)
5353
PlatformEnlightenmentProvider.Current.EnableWasm();
5454
}
5555

56-
RxApp.TaskpoolScheduler = TaskPoolScheduler.Default;
57-
RxApp.MainThreadScheduler = CurrentThreadScheduler.Instance;
56+
RxSchedulers.TaskpoolScheduler = TaskPoolScheduler.Default;
57+
RxSchedulers.MainThreadScheduler = CurrentThreadScheduler.Instance;
5858
}
5959
}

src/ReactiveUI.Blend/FollowObservableStateBehavior.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ protected static void OnStateObservableChanged(DependencyObject? sender, Depende
114114
#pragma warning disable CA2208 // Instantiate argument exceptions correctly
115115
var newValue = (IObservable<string>)e.NewValue ?? throw new ArgumentNullException(nameof(e.NewValue));
116116
#pragma warning restore CA2208 // Instantiate argument exceptions correctly
117-
item._watcher = newValue.ObserveOn(RxApp.MainThreadScheduler).Subscribe(
117+
item._watcher = newValue.ObserveOn(RxSchedulers.MainThreadScheduler).Subscribe(
118118
x =>
119119
{
120120
var target = item.TargetObject ?? item.AssociatedObject;

src/ReactiveUI.Blend/Platforms/net4/ObservableTrigger.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ protected static void OnObservableChanged(DependencyObject sender, DependencyPro
6262
triggerItem._watcher = null;
6363
}
6464

65-
triggerItem._watcher = ((IObservable<object>)e.NewValue).ObserveOn(RxApp.MainThreadScheduler).Subscribe(
65+
triggerItem._watcher = ((IObservable<object>)e.NewValue).ObserveOn(RxSchedulers.MainThreadScheduler).Subscribe(
6666
triggerItem.InvokeActions,
6767
_ =>
6868
{

src/ReactiveUI.Blend/Platforms/uap/ObservableTriggerBehavior.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ private static void OnObservableChanged(DependencyObject sender, DependencyPrope
117117
{
118118
var @this = (ObservableTriggerBehavior)sender;
119119

120-
@this._watcher.Disposable = ((IObservable<object>)e.NewValue).ObserveOn(RxApp.MainThreadScheduler).Subscribe(
120+
@this._watcher.Disposable = ((IObservable<object>)e.NewValue).ObserveOn(RxSchedulers.MainThreadScheduler).Subscribe(
121121
x => Interaction.ExecuteActions(@this._resolvedSource, @this.Actions, x),
122122
ex =>
123123
{

src/ReactiveUI.Builder.WpfApp/App.xaml.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ protected override void OnStartup(StartupEventArgs e)
5555
// Network service used to broadcast/receive messages across instances
5656
r.RegisterLazySingleton(static () => new Services.ChatNetworkService());
5757
})
58-
.Build();
58+
.BuildApp();
5959

6060
// Setup Suspension
6161
RxApp.SuspensionHost.CreateNewAppState = static () => new ChatState();
@@ -74,7 +74,7 @@ protected override void OnStartup(StartupEventArgs e)
7474
// Load persisted state asynchronously and update UI when ready
7575
_ = _driver
7676
.LoadState()
77-
.ObserveOn(RxApp.MainThreadScheduler)
77+
.ObserveOn(RxSchedulers.MainThreadScheduler)
7878
.Subscribe(
7979
static stateObj =>
8080
{

src/ReactiveUI.Builder.WpfApp/ViewModels/ChatRoomViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public ChatRoomViewModel(IScreen hostScreen, ChatRoom room, string user)
4040
MessageBus.Current.Listen<ChatNetworkMessage>(contract: room.Name)
4141
.Where(msg => msg.InstanceId != Services.AppInstance.Id)
4242
.Throttle(TimeSpan.FromMilliseconds(33))
43-
.ObserveOn(RxApp.MainThreadScheduler)
43+
.ObserveOn(RxSchedulers.MainThreadScheduler)
4444
.Subscribe(msg =>
4545
{
4646
_room.Messages.Add(new ChatMessage { Sender = msg.Sender, Text = msg.Text, Timestamp = msg.Timestamp });

src/ReactiveUI.Builder.WpfApp/ViewModels/LobbyViewModel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,11 @@ public LobbyViewModel(IScreen hostScreen)
7575
this.WhenAnyObservable(x => x.RoomsChanged)
7676
.StartWith(Unit.Default)
7777
.Select(_ => (IReadOnlyList<ChatRoom>)[.. GetState().Rooms])
78-
.ObserveOn(RxApp.MainThreadScheduler)
78+
.ObserveOn(RxSchedulers.MainThreadScheduler)
7979
.ToProperty(this, nameof(Rooms), out _rooms);
8080

8181
// Request a snapshot from peers shortly after activation
82-
RxApp.MainThreadScheduler.Schedule(Unit.Default, TimeSpan.FromMilliseconds(500), (s, __) =>
82+
RxSchedulers.MainThreadScheduler.Schedule(Unit.Default, TimeSpan.FromMilliseconds(500), (s, __) =>
8383
{
8484
var req = new Services.RoomEventMessage(Services.RoomEventKind.SyncRequest, string.Empty) { InstanceId = Services.AppInstance.Id };
8585
Trace.WriteLine("[Lobby] Broadcasting SyncRequest");

src/ReactiveUI.Maui/Common/ViewModelViewHost.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public ViewModelViewHost()
8686
this.WhenActivated(d =>
8787
{
8888
d(contractChanged
89-
.ObserveOn(RxApp.MainThreadScheduler)
89+
.ObserveOn(RxSchedulers.MainThreadScheduler)
9090
.Subscribe(x => _viewContract = x ?? string.Empty));
9191

9292
d(vmAndContract.DistinctUntilChanged().Subscribe(x => ResolveViewForViewModel(x.ViewModel, x.Contract)));

src/ReactiveUI.Maui/Registrations.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ public void Register(Action<Func<object>, Type> registerFunction)
4343

4444
if (!ModeDetector.InUnitTestRunner())
4545
{
46-
RxApp.MainThreadScheduler = new WaitForDispatcherScheduler(static () => DispatcherQueueScheduler.Current);
47-
RxApp.TaskpoolScheduler = TaskPoolScheduler.Default;
46+
RxSchedulers.MainThreadScheduler = new WaitForDispatcherScheduler(static () => DispatcherQueueScheduler.Current);
47+
RxSchedulers.TaskpoolScheduler = TaskPoolScheduler.Default;
4848
}
4949

5050
RxApp.SuppressViewCommandBindingMessage = true;

src/ReactiveUI.Maui/RoutedViewHost.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public RoutedViewHost()
8181
Router?
8282
.Navigate
8383
.Where(_ => StacksAreDifferent())
84-
.ObserveOn(RxApp.MainThreadScheduler)
84+
.ObserveOn(RxSchedulers.MainThreadScheduler)
8585
.SelectMany(_ => PagesForViewModel(Router.GetCurrentViewModel()))
8686
.SelectMany(async page =>
8787
{
@@ -245,7 +245,7 @@ protected virtual Page PageForViewModel(IRoutableViewModel vm)
245245

246246
if (SetTitleOnNavigate)
247247
{
248-
RxApp.MainThreadScheduler.Schedule(() => pg.Title = vm.UrlPathSegment);
248+
RxSchedulers.MainThreadScheduler.Schedule(() => pg.Title = vm.UrlPathSegment);
249249
}
250250

251251
return pg;

0 commit comments

Comments
 (0)