Утилизация результатов IScheduler.Scheduler - PullRequest
0 голосов
/ 20 сентября 2019

Я хочу автоматически удалить подписку RxApp.MainThreadScheduler.Schedule.Я создаю CompositeDisposable одноразовые и избавляюсь от него в методе Schedule (см. Код ниже).Это лучшая практика или может вызвать утечки памяти или блокировать сбор GC?

private async Task RunAndWaitInMainThread(Action action)
{
    AsyncSubject<Unit> waiter = new AsyncSubject<Unit>();
    CompositeDisposable disposable = new CompositeDisposable();

    RxApp.MainThreadScheduler.Schedule(() =>
    {
        action();
        waiter.OnNext(Unit.Default);
        waiter.OnCompleted();
        disposable.Clear(); // dispose subscription
    })
    .DisposeWith(disposable);

    await waiter; 
}
...