Crean up helper methods
This commit is contained in:
parent
92327dcc0d
commit
7525d318c0
@ -7,35 +7,25 @@ namespace Avalonia.Threading
|
|||||||
internal static class AvaloniaThreadUtils
|
internal static class AvaloniaThreadUtils
|
||||||
{
|
{
|
||||||
public static TResult Invoke<TResult>(this Dispatcher dispatcher, Func<TResult> function, DispatcherPriority dispatcherPriority = DispatcherPriority.Normal)
|
public static TResult Invoke<TResult>(this Dispatcher dispatcher, Func<TResult> function, DispatcherPriority dispatcherPriority = DispatcherPriority.Normal)
|
||||||
{
|
=> WaitOnDispatcherAndGetResult(dispatcher.InvokeAsync(function, dispatcherPriority), dispatcher);
|
||||||
using var source = new CancellationTokenSource();
|
|
||||||
var task = dispatcher.InvokeAsync(function, dispatcherPriority);
|
|
||||||
task.ContinueWith(t => source.Cancel(), TaskScheduler.FromCurrentSynchronizationContext());
|
|
||||||
dispatcher.MainLoop(source.Token);
|
|
||||||
return task.Result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void Invoke(this Dispatcher dispatcher, Action action, DispatcherPriority dispatcherPriority = DispatcherPriority.Normal)
|
public static void Invoke(this Dispatcher dispatcher, Action action, DispatcherPriority dispatcherPriority = DispatcherPriority.Normal)
|
||||||
{
|
=> WaitOnDispatcher(dispatcher.InvokeAsync(action, dispatcherPriority), dispatcher);
|
||||||
using var source = new CancellationTokenSource();
|
|
||||||
var task = dispatcher.InvokeAsync(action, dispatcherPriority);
|
|
||||||
task.ContinueWith(t => source.Cancel(), TaskScheduler.FromCurrentSynchronizationContext());
|
|
||||||
Dispatcher.UIThread.MainLoop(source.Token);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static T WaitOnUIAndGetResult<T>(this Task<T> task)
|
public static TResult WaitOnUIAndGetResult<TResult>(this Task<TResult> task)
|
||||||
=> WaitOnDispatcherAndGetResult(task, Dispatcher.UIThread);
|
=> WaitOnDispatcherAndGetResult(task, Dispatcher.UIThread);
|
||||||
|
|
||||||
public static T WaitOnDispatcherAndGetResult<T>(this Task<T> task, Dispatcher dispatcher)
|
|
||||||
{
|
|
||||||
using var source = new CancellationTokenSource();
|
|
||||||
task.ContinueWith(t => source.Cancel(), TaskScheduler.FromCurrentSynchronizationContext());
|
|
||||||
dispatcher.MainLoop(source.Token);
|
|
||||||
return task.Result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void WaitOnUI(this Task task)
|
public static void WaitOnUI(this Task task)
|
||||||
=> WaitOnDispatcher(task, Dispatcher.UIThread);
|
=> WaitOnDispatcher(task, Dispatcher.UIThread);
|
||||||
|
|
||||||
|
public static TResult WaitOnDispatcherAndGetResult<TResult>(this Task<TResult> task, Dispatcher dispatcher)
|
||||||
|
{
|
||||||
|
using var source = new CancellationTokenSource();
|
||||||
|
task.ContinueWith(t => source.Cancel(), TaskScheduler.FromCurrentSynchronizationContext());
|
||||||
|
dispatcher.MainLoop(source.Token);
|
||||||
|
return task.Result;
|
||||||
|
}
|
||||||
|
|
||||||
public static void WaitOnDispatcher(this Task task, Dispatcher dispatcher)
|
public static void WaitOnDispatcher(this Task task, Dispatcher dispatcher)
|
||||||
{
|
{
|
||||||
using var source = new CancellationTokenSource();
|
using var source = new CancellationTokenSource();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user