7 changed files with 40 additions and 42 deletions
@ -1,4 +1,4 @@ |
|||
Compat issues with assembly Avalonia.Base: |
|||
CannotAddAbstractMembers : Member 'protected System.IObservable<Avalonia.AvaloniaPropertyChangedEventArgs> Avalonia.AvaloniaProperty.GetChanged()' is abstract in the implementation but is missing in the contract. |
|||
TypesMustExist : Type 'Avalonia.Logging.DebugLogSink' does not exist in the implementation but it does exist in the contract. |
|||
MembersMustExist : Member 'public void Avalonia.Threading.AvaloniaSynchronizationContext..ctor(Avalonia.Threading.AvaloniaSynchronizationContext.INonPumpingPlatformWaitProvider)' does not exist in the implementation but it does exist in the contract. |
|||
TypesMustExist : Type 'Avalonia.Threading.AvaloniaSynchronizationContext.INonPumpingPlatformWaitProvider' does not exist in the implementation but it does exist in the contract. |
|||
Total Issues: 2 |
|||
|
|||
@ -0,0 +1,34 @@ |
|||
using System; |
|||
using System.Runtime.ConstrainedExecution; |
|||
using System.Threading; |
|||
using Avalonia.Threading; |
|||
using Avalonia.Win32.Interop; |
|||
|
|||
namespace Avalonia.Win32 |
|||
{ |
|||
internal class NonPumpingSyncContext : SynchronizationContext, IDisposable |
|||
{ |
|||
private readonly SynchronizationContext _inner; |
|||
|
|||
private NonPumpingSyncContext() |
|||
{ |
|||
_inner = Current; |
|||
SetWaitNotificationRequired(); |
|||
SetSynchronizationContext(this); |
|||
} |
|||
|
|||
public override void Post(SendOrPostCallback d, object state) => _inner.Post(d, state); |
|||
public override void Send(SendOrPostCallback d, object state) => _inner.Send(d, state); |
|||
|
|||
[PrePrepareMethod] |
|||
public override int Wait(IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout) |
|||
{ |
|||
return UnmanagedMethods.WaitForMultipleObjectsEx(waitHandles.Length, waitHandles, waitAll, |
|||
millisecondsTimeout, false); |
|||
} |
|||
|
|||
public void Dispose() => SynchronizationContext.SetSynchronizationContext(_inner); |
|||
|
|||
public static IDisposable Use() => new NonPumpingSyncContext(); |
|||
} |
|||
} |
|||
@ -1,15 +0,0 @@ |
|||
using System; |
|||
using Avalonia.Threading; |
|||
using Avalonia.Win32.Interop; |
|||
|
|||
namespace Avalonia.Win32 |
|||
{ |
|||
internal class NonPumpingWaitProvider : AvaloniaSynchronizationContext.INonPumpingPlatformWaitProvider |
|||
{ |
|||
public int Wait(IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout) |
|||
{ |
|||
return UnmanagedMethods.WaitForMultipleObjectsEx(waitHandles.Length, waitHandles, waitAll, |
|||
millisecondsTimeout, false); |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue