https://github.com/2dust/v2rayN/issues/10107
This commit is contained in:
2dust
2026-09-09 13:55:31 +08:00
parent 85666af36a
commit d8c7bd9d02
@@ -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()