booking-microservices/BuildingBlocks/Utils/NoSynchronizationContextScope.cs
2025-03-15 01:39:43 +03:30

25 lines
704 B
C#

namespace BuildingBlocks.Utils;
public static class NoSynchronizationContextScope
{
public static Disposable Enter()
{
var context = SynchronizationContext.Current;
SynchronizationContext.SetSynchronizationContext(null);
return new Disposable(context);
}
public struct Disposable : IDisposable
{
private readonly SynchronizationContext? synchronizationContext;
public Disposable(SynchronizationContext? synchronizationContext)
{
this.synchronizationContext = synchronizationContext;
}
public void Dispose() =>
SynchronizationContext.SetSynchronizationContext(synchronizationContext);
}
}