using System;
using System.Threading.Tasks;
using Avalonia.Threading;
namespace Avalonia.UnitTests
{
///
/// Immediately invokes dispatched jobs on the current thread.
///
public class ImmediateDispatcher : IDispatcher
{
///
public bool CheckAccess()
{
return true;
}
///
public void Post(Action action, DispatcherPriority priority = DispatcherPriority.Normal)
{
action();
}
///
public Task InvokeAsync(Action action, DispatcherPriority priority = DispatcherPriority.Normal)
{
action();
return Task.CompletedTask;
}
///
public Task InvokeAsync(Func function, DispatcherPriority priority = DispatcherPriority.Normal)
{
var result = function();
return Task.FromResult(result);
}
///
public Task InvokeAsync(Func function, DispatcherPriority priority = DispatcherPriority.Normal)
{
return function();
}
///
public Task InvokeAsync(Func> function, DispatcherPriority priority = DispatcherPriority.Normal)
{
return function();
}
///
public void VerifyAccess()
{
}
}
}