using System;
using System.Runtime.CompilerServices;
using System.Security;
namespace ComposableAsync
{
///
/// Dispatcher awaiter, making a dispatcher awaitable
///
public struct DispatcherAwaiter : INotifyCompletion
{
///
/// Dispatcher never is synchronous
///
public bool IsCompleted => false;
private readonly IDispatcher _Dispatcher;
///
/// Construct a NotifyCompletion fom a dispatcher
///
///
public DispatcherAwaiter(IDispatcher dispatcher)
{
_Dispatcher = dispatcher;
}
///
/// Dispatch on complete
///
///
[SecuritySafeCritical]
public void OnCompleted(Action continuation)
{
_Dispatcher.Dispatch(continuation);
}
///
/// No Result
///
public void GetResult() { }
}
}