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
.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()