using System.Threading.Tasks;
namespace ComposableAsync
{
///
/// implementation based on single
///
public sealed class MonoDispatcherManager : IDispatcherManager
{
///
public bool DisposeDispatcher { get; }
///
public IDispatcher GetDispatcher() => _Dispatcher;
private readonly IDispatcher _Dispatcher;
///
/// Create
///
///
///
public MonoDispatcherManager(IDispatcher dispatcher, bool shouldDispose = false)
{
_Dispatcher = dispatcher;
DisposeDispatcher = shouldDispose;
}
///
public Task DisposeAsync()
{
return DisposeDispatcher && (_Dispatcher is IAsyncDisposable disposable) ?
disposable.DisposeAsync() : Task.CompletedTask;
}
}
}