[Tool] [Windows] Output build duration (#120311)

* [Tool][Windows] Output build duration

* Tweak

* Format
diff --git a/dev/devicelab/lib/tasks/run_tests.dart b/dev/devicelab/lib/tasks/run_tests.dart
index 21e9777..9dc6b3d 100644
--- a/dev/devicelab/lib/tasks/run_tests.dart
+++ b/dev/devicelab/lib/tasks/run_tests.dart
@@ -58,7 +58,7 @@
 }
 
 TaskFunction createWindowsRunDebugTest() {
-  return DesktopRunOutputTest(
+  return WindowsRunOutputTest(
     '${flutterDirectory.path}/dev/integration_tests/ui',
     'lib/empty.dart',
     release: false,
@@ -66,7 +66,7 @@
 }
 
 TaskFunction createWindowsRunReleaseTest() {
-  return DesktopRunOutputTest(
+  return WindowsRunOutputTest(
     '${flutterDirectory.path}/dev/integration_tests/ui',
     'lib/empty.dart',
     release: true,
@@ -164,6 +164,30 @@
   }
 }
 
+class WindowsRunOutputTest extends DesktopRunOutputTest {
+  WindowsRunOutputTest(
+    super.testDirectory,
+    super.testTarget, {
+      required super.release,
+      super.allowStderr = false,
+    }
+  );
+
+  static final RegExp _buildOutput = RegExp(
+    r'Building Windows application\.\.\.\s*\d+(\.\d+)?(ms|s)',
+    multiLine: true,
+  );
+
+  @override
+  void verifyBuildOutput(List<String> stdout) {
+    _findNextMatcherInList(
+      stdout,
+      _buildOutput.hasMatch,
+      'Building Windows application...',
+    );
+  }
+}
+
 class DesktopRunOutputTest extends RunOutputTask {
   DesktopRunOutputTest(
     super.testDirectory,
@@ -188,6 +212,8 @@
       'Launching $testTarget on',
     );
 
+    verifyBuildOutput(stdout);
+
     _findNextMatcherInList(
       stdout,
       (String line) => line.contains('Quit (terminate the application on the device).'),
@@ -202,6 +228,9 @@
 
     return TaskResult.success(null);
   }
+
+  /// Verify the output from `flutter run`'s build step.
+  void verifyBuildOutput(List<String> stdout) {}
 }
 
 /// Test that the output of `flutter run` is expected.
diff --git a/packages/flutter_tools/lib/src/windows/build_windows.dart b/packages/flutter_tools/lib/src/windows/build_windows.dart
index 9de6b49..e2ebb70 100644
--- a/packages/flutter_tools/lib/src/windows/build_windows.dart
+++ b/packages/flutter_tools/lib/src/windows/build_windows.dart
@@ -90,7 +90,7 @@
     }
     await _runBuild(cmakePath, buildDirectory, buildModeName);
   } finally {
-    status.cancel();
+    status.stop();
   }
   if (buildInfo.codeSizeDirectory != null && sizeAnalyzer != null) {
     final String arch = getNameForTargetPlatform(TargetPlatform.windows_x64);