btcpayserver/BTCPayServer.Common/SynchronizationContextRemover.cs

35 lines
814 B
C#
Raw Normal View History

2020-06-28 21:44:35 -05:00
using System;
2018-04-19 16:54:25 +09:00
using System.Runtime.CompilerServices;
using System.Threading;
namespace BTCPayServer
{
public struct SynchronizationContextRemover : INotifyCompletion
{
public bool IsCompleted => SynchronizationContext.Current == null;
public void OnCompleted(Action continuation)
{
var prev = SynchronizationContext.Current;
try
{
SynchronizationContext.SetSynchronizationContext(null);
continuation();
}
finally
{
SynchronizationContext.SetSynchronizationContext(prev);
}
}
public SynchronizationContextRemover GetAwaiter()
{
return this;
}
public void GetResult()
{
}
}
}