using System.Threading;
using LensAdjustmentTool.Models;
namespace LensAdjustmentTool.Infrastructure
{
public sealed class LatestResultMailbox
{
private FrameAnalysisResult _latest;
public void Publish(FrameAnalysisResult result)
{
var old = Interlocked.Exchange(ref _latest, result);
old?.Dispose();
}
public FrameAnalysisResult TakeLatest()
{
return Interlocked.Exchange(ref _latest, null);
}
public void Clear()
{
var old = Interlocked.Exchange(ref _latest, null);
old?.Dispose();
}
}
}