mirror of
https://github.com/2dust/v2rayN.git
synced 2026-09-22 06:12:05 +03:00
@@ -269,7 +269,7 @@ public partial class MainWindowViewModel : MyReactiveObject
|
||||
ProfilesViewModel.RefreshServersRequested
|
||||
.AsObservable()
|
||||
.ObserveOn(RxSchedulers.MainThreadScheduler)
|
||||
.SubscribeAsync(async _ => await RefreshServers());
|
||||
.SubscribeAsync(async _ => await RefreshServersDispatcherAsync());
|
||||
|
||||
var vmReloadRequestedList = new List<IObservable<RxVoid>>
|
||||
{
|
||||
@@ -400,6 +400,8 @@ public partial class MainWindowViewModel : MyReactiveObject
|
||||
|
||||
#region Servers && Groups
|
||||
|
||||
private readonly SemaphoreSlim _refreshServersSemaphore = new(1, 1);
|
||||
|
||||
private async Task RefreshServers()
|
||||
{
|
||||
await ProfilesViewModel.RefreshServersBiz();
|
||||
@@ -411,13 +413,21 @@ public partial class MainWindowViewModel : MyReactiveObject
|
||||
private async Task RefreshServersDispatcherAsync()
|
||||
{
|
||||
//await Observable.Start(async () => await RefreshServers(), RxSchedulers.MainThreadScheduler);
|
||||
await Signal.FromAsync(async () =>
|
||||
await _refreshServersSemaphore.WaitAsync();
|
||||
try
|
||||
{
|
||||
await Signal.FromAsync(async () =>
|
||||
{
|
||||
await RefreshServers();
|
||||
return RxVoid.Default;
|
||||
})
|
||||
.SubscribeOn(RxSchedulers.MainThreadScheduler)
|
||||
.ToTask();
|
||||
.SubscribeOn(RxSchedulers.MainThreadScheduler)
|
||||
.ToTask();
|
||||
}
|
||||
finally
|
||||
{
|
||||
_refreshServersSemaphore.Release();
|
||||
}
|
||||
}
|
||||
|
||||
private async Task RefreshSubscriptions()
|
||||
|
||||
Reference in New Issue
Block a user