首页 > 解决方案 > 处理 IScheduler.Scheduler 结果

问题描述

我想自动处理 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; 
}

标签: c#reactiveui

解决方案


推荐阅读