Forge
csharpdeeb25a2
1using Avalonia.Threading;
2
3namespace CascadeIDE.Services;
4
5/// <summary>Реализация <see cref="IUiScheduler"/> через Avalonia <see cref="Dispatcher.UIThread"/>.</summary>
6public sealed class AvaloniaUiScheduler : IUiScheduler
7{
8 public bool CheckAccess() => Dispatcher.UIThread.CheckAccess();
9
10 public void Post(Action action, DispatcherPriority priority = default) =>
11 Dispatcher.UIThread.Post(action, priority);
12
13 public void Invoke(Action action) =>
14 Dispatcher.UIThread.Invoke(action);
15
16 public T Invoke<T>(Func<T> action) =>
17 Dispatcher.UIThread.Invoke(action);
18
19 public Task InvokeAsync(Action action, DispatcherPriority priority = default) =>
20 Dispatcher.UIThread.InvokeAsync(action, priority).GetTask();
21
22 public Task<T> InvokeAsync<T>(Func<T> action, DispatcherPriority priority = default) =>
23 Dispatcher.UIThread.InvokeAsync(action, priority).GetTask();
24
25 public Task InvokeAsync(Func<Task> action, DispatcherPriority priority = default) =>
26 Dispatcher.UIThread.InvokeAsync(action, priority);
27
28 public Task<T> InvokeAsync<T>(Func<Task<T>> action, DispatcherPriority priority = default) =>
29 Dispatcher.UIThread.InvokeAsync(action, priority);
30}
31
View only · write via MCP/CIDE