24 lines
710 B
C#
24 lines
710 B
C#
// Copyright (c) Microsoft. All rights reserved.
|
|
|
|
public class TurnManager : IDisposable
|
|
{
|
|
private int _currentTurnId = 0;
|
|
private CancellationTokenSource _cts = new();
|
|
private readonly object _lock = new();
|
|
public int CurrentTurnId { get { lock (this._lock) { return this._currentTurnId; } } }
|
|
public CancellationToken CurrentToken { get { lock (this._lock) { return this._cts.Token; } } }
|
|
|
|
public void Interrupt()
|
|
{
|
|
lock (this._lock)
|
|
{
|
|
this._currentTurnId++;
|
|
this._cts.Cancel();
|
|
this._cts.Dispose();
|
|
this._cts = new CancellationTokenSource();
|
|
}
|
|
}
|
|
|
|
public void Dispose() => this._cts?.Dispose();
|
|
}
|