Skip to content

Commit 5a62473

Browse files
committed
Assembly Defination + async fix
1 parent f32bd5d commit 5a62473

4 files changed

Lines changed: 41 additions & 11 deletions

File tree

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "CatCode.Commands",
3+
"rootNamespace": "",
4+
"references": [],
5+
"includePlatforms": [],
6+
"excludePlatforms": [],
7+
"allowUnsafeCode": false,
8+
"overrideReferences": false,
9+
"precompiledReferences": [],
10+
"autoReferenced": true,
11+
"defineConstraints": [],
12+
"versionDefines": [],
13+
"noEngineReferences": false
14+
}

Assets/CatCode/Commands/CatCode.Commands.asmdef.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/CatCode/Commands/AsyncCommandExtensions.cs renamed to Assets/CatCode/Commands/CommandAsyncExtensions.cs

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,57 +4,61 @@
44

55
namespace CatCode.Commands
66
{
7-
public static class AsyncCommandExtensions
7+
public static class CommandAsyncExtensions
88
{
99
public static Awaitable StartedToAwaitable(this ICommand command, CancellationToken token)
1010
{
1111
var tcs = new AwaitableCompletionSource();
12+
CancellationTokenRegistration ctr = default;
13+
1214
if (command.State > CommandState.Idle)
13-
{
1415
tcs.SetResult();
15-
}
1616
else
1717
{
18-
var cts = token.Register(OnCancel);
18+
ctr = token.Register(OnCancel);
1919
command.Started += OnStarted;
2020
}
2121
return tcs.Awaitable;
2222

2323
void OnStarted()
2424
{
2525
command.Started -= OnStarted;
26+
ctr.Dispose();
2627
tcs.TrySetResult();
2728
}
2829

2930
void OnCancel()
3031
{
3132
command.Started -= OnStarted;
33+
ctr.Dispose();
3234
tcs.TrySetCanceled();
3335
}
3436
}
3537

3638
public static Awaitable FinishToAwaitable(this ICommand command, CancellationToken token)
3739
{
3840
var tcs = new AwaitableCompletionSource();
41+
CancellationTokenRegistration ctr = default;
42+
3943
if (command.State == CommandState.Finished)
40-
{
4144
tcs.SetResult();
42-
}
4345
else
4446
{
45-
var ctr = token.Register(OnCancel);
47+
ctr = token.Register(OnCancel);
4648
command.Finished += OnFinished;
4749
}
4850
return tcs.Awaitable;
4951

5052
void OnFinished()
5153
{
5254
command.Finished -= OnFinished;
55+
ctr.Dispose();
5356
tcs.TrySetResult();
5457
}
5558
void OnCancel()
5659
{
5760
command.Finished -= OnFinished;
61+
ctr.Dispose();
5862
tcs.TrySetCanceled();
5963
}
6064
}
@@ -64,21 +68,23 @@ public static Task StartToTask(this ICommand command, CancellationToken token)
6468
{
6569
if (command.State > CommandState.Idle)
6670
return Task.CompletedTask;
67-
6871
var tcs = new TaskCompletionSource<bool>();
69-
var ctr = token.Register(OnCancel);
72+
CancellationTokenRegistration ctr = default;
73+
ctr = token.Register(OnCancel);
7074
command.Started += OnStarted;
7175
return tcs.Task;
7276

7377
void OnStarted()
7478
{
7579
command.Started -= OnStarted;
80+
ctr.Dispose();
7681
tcs.TrySetResult(true);
7782
}
7883

7984
void OnCancel()
8085
{
8186
command.Started -= OnStarted;
87+
ctr.Dispose();
8288
tcs.TrySetCanceled();
8389
}
8490
}
@@ -87,20 +93,23 @@ public static Task FinishToTask(this ICommand command, CancellationToken token)
8793
{
8894
if (command.State == CommandState.Finished)
8995
return Task.CompletedTask;
90-
96+
9197
var tcs = new TaskCompletionSource<bool>();
92-
var ctr = token.Register(OnCancel);
98+
CancellationTokenRegistration ctr = default;
99+
ctr = token.Register(OnCancel);
93100
command.Finished += OnFinished;
94101
return tcs.Task;
95102

96103
void OnFinished()
97104
{
98105
command.Finished -= OnFinished;
106+
ctr.Dispose();
99107
tcs.TrySetResult(true);
100108
}
101109
void OnCancel()
102110
{
103111
command.Finished -= OnFinished;
112+
ctr.Dispose();
104113
tcs.TrySetCanceled();
105114
}
106115
}

Assets/CatCode/Commands/AsyncCommandExtensions.cs.meta renamed to Assets/CatCode/Commands/CommandAsyncExtensions.cs.meta

File renamed without changes.

0 commit comments

Comments
 (0)