use async build

This commit is contained in:
Matt Parker
2025-07-31 20:18:54 +10:00
parent 6975146579
commit ba7cc3d3fe

View File

@@ -25,10 +25,19 @@ public class BuildService
hostServices: null, hostServices: null,
flags: BuildRequestDataFlags.None); flags: BuildRequestDataFlags.None);
await Task.Run(() => await Task.Run(async () =>
{ {
var buildCompleteTcs = new TaskCompletionSource<BuildResult>();
BuildManager.DefaultBuildManager.BeginBuild(buildParameters);
var buildResult2 = BuildManager.DefaultBuildManager.PendBuildRequest(buildRequest);
var timer = Stopwatch.StartNew(); var timer = Stopwatch.StartNew();
var buildResult = BuildManager.DefaultBuildManager.Build(buildParameters, buildRequest); buildResult2.ExecuteAsync((BuildSubmission test) =>
{
buildCompleteTcs.SetResult(test.BuildResult!);
Console.WriteLine("Build submission completed.");
}, null);
//var buildResult = BuildManager.DefaultBuildManager.Build(buildParameters, buildRequest); // This is a convenience to essentially do the same thing.
var buildResult = await buildCompleteTcs.Task.ConfigureAwait(false);
timer.Stop(); timer.Stop();
Console.WriteLine($"Build result: {buildResult.OverallResult} in {timer.ElapsedMilliseconds}ms"); Console.WriteLine($"Build result: {buildResult.OverallResult} in {timer.ElapsedMilliseconds}ms");
}).ConfigureAwait(false); }).ConfigureAwait(false);