#724·UniTask

Calling `ToCancellationToken` on completed task throws `ObjectDisposedException`

Author: TrarizonCreated Jul 8, 2026Updated Jul 8, 2026

When calling ToCancellationToken on a completed task, an exception occurred

csharp
UniTask.CompletedTask.ToCancellationToken();
// System.ObjectDisposedException: The CancellationTokenSource has been disposed.

The source code of ToCancellationToken is

csharp
var cts = new CancellationTokenSource();
Core(task, cts).Forget();
return cts.Token;

If the task is completed, cts will be disposed synchronously in Core() and then accessing cts.Token causes ObjectDisposeException

Is this a bug or by design?