Add build cancellation

This commit is contained in:
Matt Parker
2025-08-03 00:27:33 +10:00
parent 22f11a5587
commit 9a3fe17b88
3 changed files with 12 additions and 4 deletions

View File

@@ -8,13 +8,15 @@ public static class BuildManagerExtensions
/// Convenience method. Submits a lone build request and returns a Task that will complete when results are available.
/// </summary>
/// <exception cref="InvalidOperationException">Thrown if a build is already in progress.</exception>
public static async Task<BuildResult> BuildAsync(this BuildManager buildManager, BuildParameters parameters, BuildRequestData requestData)
public static async Task<BuildResult> BuildAsync(this BuildManager buildManager, BuildParameters parameters, BuildRequestData requestData, CancellationToken cancellationToken = default)
{
BuildResult result;
buildManager.BeginBuild(parameters);
try
{
var tcs = new TaskCompletionSource<BuildResult>(TaskCreationOptions.RunContinuationsAsynchronously);
await using var cancellationTokenRegistration = cancellationToken.Register(() => buildManager.CancelAllSubmissions());
cancellationTokenRegistration.ConfigureAwait(false);
try
{