Forge
csharp4405de34
1using Avalonia.Threading;
2
3namespace CascadeIDE.Services;
4
5/// <summary>
6/// Единая точка маршалинга на UI-поток (фаза 5). Реализация — обёртка над <see cref="Dispatcher.UIThread"/>.
7/// </summary>
8public interface IUiScheduler
9{
10 bool CheckAccess();
11
12 void Post(Action action, DispatcherPriority priority = default);
13
14 void Invoke(Action action);
15
16 T Invoke<T>(Func<T> action);
17
18 Task InvokeAsync(Action action, DispatcherPriority priority = default);
19
20 Task<T> InvokeAsync<T>(Func<T> action, DispatcherPriority priority = default);
21
22 Task InvokeAsync(Func<Task> action, DispatcherPriority priority = default);
23
24 /// <summary>Маршалит асинхронную работу на UI-поток; возвращает результат <typeparamref name="T"/> после завершения.</summary>
25 Task<T> InvokeAsync<T>(Func<Task<T>> action, DispatcherPriority priority = default);
26}
27
View only · write via MCP/CIDE