Skip to content

Commit 7d3bb9c

Browse files
Merge pull request #26 from AndreasReitberger/25-add-setbusyasync-to-viewmodelbase
Update ViewModelBase.cs
2 parents eac0cd9 + f6639bc commit 7d3bb9c

1 file changed

Lines changed: 26 additions & 3 deletions

File tree

src/SharedXFormCoreLibrary/Models/ViewModelBase.cs

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ public partial class ViewModelBase : ViewModelCoreBase, IViewModelBase
1616
#region Ctor
1717
public ViewModelBase()
1818
{
19-
Dispatcher = Application.Current.Dispatcher;
19+
Dispatcher ??= Application.Current.Dispatcher;
2020
}
21-
public ViewModelBase(IDispatcher dispatcher)
21+
public ViewModelBase(IDispatcher? dispatcher) : base()
2222
{
2323
Dispatcher = dispatcher;
2424
}
25-
public ViewModelBase(IDispatcher dispatcher, IServiceProvider provider)
25+
public ViewModelBase(IDispatcher? dispatcher, IServiceProvider? provider) : base(provider: provider)
2626
{
2727
Dispatcher = dispatcher;
2828
Provider = provider;
@@ -53,6 +53,29 @@ public void SetBusy(bool isBusy, IDispatcher? dispatcher)
5353
}
5454
}
5555

56+
public async Task SetBusyAsync(bool isBusy, IDispatcher? dispatcher)
57+
{
58+
// Only dispatch if needed
59+
if (dispatcher is not null && dispatcher?.IsInvokeRequired is true)
60+
{
61+
await Task.Run(() => dispatcher.BeginInvokeOnMainThread(() =>
62+
{
63+
if (isBusy)
64+
IsBusyCounter++;
65+
else
66+
IsBusyCounter--;
67+
}));
68+
}
69+
// Update on the MainThread
70+
else
71+
{
72+
if (isBusy)
73+
IsBusyCounter++;
74+
else
75+
IsBusyCounter--;
76+
}
77+
}
78+
5679
#endregion
5780

5881
#region Dispose

0 commit comments

Comments
 (0)