Browse Source

Use DispatcherTaskScheduler instead of TaskScheduler.FromCurrentSynchronizationContext

pull/17825/head
Max Katz 1 year ago
parent
commit
7ae9fcc9ba
  1. 3
      src/Avalonia.Base/Animation/Animation.cs
  2. 3
      src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin.cs
  3. 3
      src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin`1.cs
  4. 3
      src/Avalonia.Controls/TransitioningContentControl.cs
  5. 3
      src/Avalonia.Controls/VirtualizingCarouselPanel.cs
  6. 3
      src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/TaskStreamPlugin.cs

3
src/Avalonia.Base/Animation/Animation.cs

@ -7,6 +7,7 @@ using System.Threading.Tasks;
using Avalonia.Animation.Easings;
using Avalonia.Data;
using Avalonia.Metadata;
using Avalonia.Threading;
namespace Avalonia.Animation
{
@ -310,7 +311,7 @@ namespace Avalonia.Animation
Task.WhenAll(completionTasks!)
.ContinueWith((_, state) => ((Action)state!).Invoke()
, onComplete
, TaskScheduler.FromCurrentSynchronizationContext()
, DispatcherTaskScheduler.UIThread
);
}
}

3
src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin.cs

@ -3,6 +3,7 @@ using System.Diagnostics.CodeAnalysis;
using System.Reflection;
using System.Threading.Tasks;
using Avalonia.Reactive;
using Avalonia.Threading;
namespace Avalonia.Data.Core.Plugins
{
@ -51,7 +52,7 @@ namespace Avalonia.Data.Core.Plugins
var subject = new LightweightSubject<object?>();
task.ContinueWith(
x => HandleCompleted(task).Subscribe(subject),
TaskScheduler.FromCurrentSynchronizationContext())
DispatcherTaskScheduler.UIThread)
.ConfigureAwait(false);
return subject;
}

3
src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin`1.cs

@ -1,6 +1,7 @@
using System;
using System.Threading.Tasks;
using Avalonia.Reactive;
using Avalonia.Threading;
namespace Avalonia.Data.Core.Plugins;
@ -27,7 +28,7 @@ internal class TaskStreamPlugin<T> : IStreamPlugin
var subject = new LightweightSubject<object?>();
task.ContinueWith(
_ => HandleCompleted(task).Subscribe(subject),
TaskScheduler.FromCurrentSynchronizationContext())
DispatcherTaskScheduler.UIThread)
.ConfigureAwait(false);
return subject;
}

3
src/Avalonia.Controls/TransitioningContentControl.cs

@ -5,6 +5,7 @@ using Avalonia.Animation;
using Avalonia.Controls.Presenters;
using Avalonia.Controls.Templates;
using Avalonia.Interactivity;
using Avalonia.Threading;
namespace Avalonia.Controls;
@ -103,7 +104,7 @@ public class TransitioningContentControl : ContentControl
{
HideOldPresenter();
}
}, TaskScheduler.FromCurrentSynchronizationContext());
}, DispatcherTaskScheduler.UIThread);
}
_shouldAnimate = false;

3
src/Avalonia.Controls/VirtualizingCarouselPanel.cs

@ -7,6 +7,7 @@ using System.Threading.Tasks;
using Avalonia.Animation;
using Avalonia.Controls.Primitives;
using Avalonia.Input;
using Avalonia.Threading;
namespace Avalonia.Controls
{
@ -167,7 +168,7 @@ namespace Avalonia.Controls
}
transition.Start(_transitionFrom, to, forward, _transition.Token)
.ContinueWith(TransitionFinished, TaskScheduler.FromCurrentSynchronizationContext());
.ContinueWith(TransitionFinished, DispatcherTaskScheduler.UIThread);
}
return result;

3
src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/TaskStreamPlugin.cs

@ -3,6 +3,7 @@ using System.Threading.Tasks;
using Avalonia.Data;
using Avalonia.Data.Core.Plugins;
using Avalonia.Reactive;
using Avalonia.Threading;
namespace Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings
{
@ -29,7 +30,7 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings
var subject = new LightweightSubject<object?>();
task.ContinueWith(
_ => HandleCompleted(task).Subscribe(subject),
TaskScheduler.FromCurrentSynchronizationContext())
DispatcherTaskScheduler.UIThread)
.ConfigureAwait(false);
return subject;
}

Loading…
Cancel
Save