timcassell / ProtoPromise

Robust and efficient library for management of asynchronous operations in C#/.Net.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Checking `CancelationToken.IsCancelationRequested` returns wrong value

timcassell opened this issue · comments

In .Net 6+, when a System.Threading.CancellationTokenSource is reset, then cancelled, the converted Proto.Promises.CancelationToken is not canceled when checking its cancelation status via IsCancelationRequested. This test fails:

[Test]
public void ToCancelationTokenIsCanceledWhenSourceIsResetThenCanceled()
{
    var cancelationSource = new CancellationTokenSource();
    var token = cancelationSource.Token.ToCancelationToken();

    Assert.IsFalse(token.IsCancelationRequested);

    cancelationSource.TryReset();
    Assert.IsFalse(token.IsCancelationRequested);

    cancelationSource.Cancel();
    Assert.IsTrue(token.IsCancelationRequested);

    cancelationSource.Dispose();
}