49 lines
992 B
C#
49 lines
992 B
C#
using System;
|
|
using System.Threading;
|
|
|
|
namespace ConfusedPolarBear.Plugin.IntroSkipper;
|
|
|
|
internal sealed class ScheduledTaskSemaphore : IDisposable
|
|
{
|
|
private static readonly SemaphoreSlim _semaphore = new SemaphoreSlim(1, 1);
|
|
|
|
private ScheduledTaskSemaphore()
|
|
{
|
|
}
|
|
|
|
public static int CurrentCount => _semaphore.CurrentCount;
|
|
|
|
public static bool Wait(int timeout, CancellationToken cancellationToken)
|
|
{
|
|
return _semaphore.Wait(timeout, cancellationToken);
|
|
}
|
|
|
|
public static int Release()
|
|
{
|
|
return _semaphore.Release();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Dispose.
|
|
/// </summary>
|
|
public void Dispose()
|
|
{
|
|
Dispose(true);
|
|
GC.SuppressFinalize(this);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Protected dispose.
|
|
/// </summary>
|
|
/// <param name="disposing">Dispose.</param>
|
|
private void Dispose(bool disposing)
|
|
{
|
|
if (!disposing)
|
|
{
|
|
return;
|
|
}
|
|
|
|
_semaphore.Dispose();
|
|
}
|
|
}
|