Skip to content

Commit 2a446db

Browse files
committed
fix possible call from invalid thread error
1 parent a5aca40 commit 2a446db

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

src/OneWare.PackageManager/ViewModels/PackageManagerViewModel.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Reactive.Linq;
44
using Avalonia;
55
using Avalonia.Controls;
6+
using Avalonia.Threading;
67
using CommunityToolkit.Mvvm.Input;
78
using DynamicData.Binding;
89
using Microsoft.Extensions.Logging;
@@ -56,14 +57,19 @@ public PackageManagerViewModel(IPackageService packageService, IHttpService http
5657

5758
SelectedCategory = GetAllCategory() ?? PackageCategories.FirstOrDefault();
5859

59-
_packageService.WhenValueChanged(x => x.IsUpdating).Subscribe(x => { IsLoading = x; });
60+
_packageService.WhenValueChanged(x => x.IsUpdating)
61+
.Subscribe(x => Dispatcher.UIThread.Post(() => IsLoading = x));
6062

6163
UpdateAllCommand = new AsyncRelayCommand(UpdateAllAsync, () => _packageService.Packages.Any(x => x.Value.Status == PackageStatus.UpdateAvailable));
6264

6365
Observable.FromEventPattern(_packageService, nameof(_packageService.PackagesUpdated)).Subscribe(_ =>
6466
{
65-
ConstructPackageViewModels();
66-
UpdateAllCommand.NotifyCanExecuteChanged();
67+
// PackagesUpdated can be raised from a background thread
68+
Dispatcher.UIThread.Post(() =>
69+
{
70+
ConstructPackageViewModels();
71+
UpdateAllCommand.NotifyCanExecuteChanged();
72+
});
6773
});
6874

6975
ConstructPackageViewModels();

0 commit comments

Comments
 (0)