M Extensions/NosSmooth.Extensions.Combat/Operations/CompoundOperation.cs => Extensions/NosSmooth.Extensions.Combat/Operations/CompoundOperation.cs +6 -0
@@ 22,6 22,7 @@ public class CompoundOperation : ICombatOperation
private ICombatOperation? _currentOperation;
private CancellationTokenSource? _ct;
private Task<Result>? _compoundOperation;
+ private bool _disposed;
/// <summary>
/// Initializes a new instance of the <see cref="CompoundOperation"/> class.
@@ 117,6 118,11 @@ public class CompoundOperation : ICombatOperation
/// <inheritdoc />
public void Cancel()
{
+ if (_disposed)
+ {
+ return;
+ }
+ _disposed = true;
_currentOperation?.Cancel();
_ct?.Cancel();
}
M Extensions/NosSmooth.Extensions.Combat/Operations/UseItemOperation.cs => Extensions/NosSmooth.Extensions.Combat/Operations/UseItemOperation.cs +6 -0
@@ 22,6 22,7 @@ public record UseItemOperation(InventoryItem Item) : ICombatOperation
{
private Task<Result>? _useItemOperation;
private CancellationTokenSource? _ct;
+ private bool _disposed;
/// <inheritdoc />
public OperationQueueType QueueType => OperationQueueType.Item;
@@ 94,6 95,11 @@ public record UseItemOperation(InventoryItem Item) : ICombatOperation
/// <inheritdoc />
public void Dispose()
{
+ if (_disposed)
+ {
+ return;
+ }
+ _disposed = true;
_ct?.Cancel();
_useItemOperation?.Dispose();
_ct?.Dispose();
M Extensions/NosSmooth.Extensions.Combat/Operations/WalkInRangeOperation.cs => Extensions/NosSmooth.Extensions.Combat/Operations/WalkInRangeOperation.cs +6 -0
@@ 31,6 31,7 @@ public record WalkInRangeOperation
{
private Task<Result>? _walkInRangeOperation;
private CancellationTokenSource? _ct;
+ private bool _disposed;
/// <inheritdoc />
public OperationQueueType QueueType => OperationQueueType.TotalControl;
@@ 208,6 209,11 @@ public record WalkInRangeOperation
/// <inheritdoc />
public void Dispose()
{
+ if (_disposed)
+ {
+ return;
+ }
+ _disposed = true;
_ct?.Cancel();
_walkInRangeOperation?.Dispose();
_ct?.Dispose();
M Extensions/NosSmooth.Extensions.Combat/Operations/WalkOperation.cs => Extensions/NosSmooth.Extensions.Combat/Operations/WalkOperation.cs +6 -0
@@ 21,6 21,7 @@ public record WalkOperation(WalkManager WalkManager, short X, short Y) : ICombat
{
private Task<Result>? _walkOperation;
private CancellationTokenSource? _ct;
+ private bool _disposed;
/// <inheritdoc />
public OperationQueueType QueueType => OperationQueueType.TotalControl;
@@ 110,6 111,11 @@ public record WalkOperation(WalkManager WalkManager, short X, short Y) : ICombat
/// <inheritdoc />
public void Dispose()
{
+ if (_disposed)
+ {
+ return;
+ }
+ _disposed = true;
_ct?.Cancel();
_walkOperation?.Dispose();
_ct?.Dispose();