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