From 6ac122bfd884c27f5a14e4d352233b5e2f7ff3cf Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Thu, 23 Jan 2025 13:54:11 +0100 Subject: [PATCH] Added a done callback --- .../Tools/DirectoryInfoExtensions.cs | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/app/MindWork AI Studio/Tools/DirectoryInfoExtensions.cs b/app/MindWork AI Studio/Tools/DirectoryInfoExtensions.cs index 87564ae..70adcab 100644 --- a/app/MindWork AI Studio/Tools/DirectoryInfoExtensions.cs +++ b/app/MindWork AI Studio/Tools/DirectoryInfoExtensions.cs @@ -8,7 +8,7 @@ public static class DirectoryInfoExtensions RecurseSubdirectories = true, ReturnSpecialDirectories = false, }; - + /// /// Determines the size of the directory and all its subdirectories, as well as the number of files. When desired, /// it can report the found files up to a certain limit. @@ -17,20 +17,21 @@ public static class DirectoryInfoExtensions /// You might set reportMaxFiles to a negative value to report all files. Any positive value will limit the number /// of reported files. The cancellation token can be used to stop the operation. The cancellation operation is also able /// to cancel slow operations, e.g., when the directory is on a slow network drive. - /// + /// /// After stopping the operation, the total size and number of files are reported as they were at the time of cancellation. - /// + /// /// Please note that the entire operation is done on a background thread. Thus, when reporting the found files or the /// current total size, you need to use the appropriate dispatcher to update the UI. Usually, you can use the InvokeAsync /// method to update the UI from a background thread. /// - /// - /// - /// - /// - /// - /// - public static async Task DetermineContentSize(this DirectoryInfo directoryInfo, Action reportCurrentTotalSize, Action reportCurrentNumFiles, Action reportNextFile, int reportMaxFiles = -1, CancellationToken cancellationToken = default) + /// The root directory to determine the size of. + /// The callback to report the current total size of the directory. + /// The callback to report the current number of files found. + /// The callback to report the next file found. The file name is relative to the root directory. + /// The maximum number of files to report. A negative value reports all files. + /// The callback to report that the operation is done. + /// The cancellation token to stop the operation. + public static async Task DetermineContentSize(this DirectoryInfo directoryInfo, Action reportCurrentTotalSize, Action reportCurrentNumFiles, Action reportNextFile, int reportMaxFiles = -1, Action? done = null, CancellationToken cancellationToken = default) { var rootDirectoryLen = directoryInfo.FullName.Length; long totalSize = 0; @@ -58,5 +59,8 @@ public static class DirectoryInfoExtensions reportCurrentTotalSize(totalSize); reportCurrentNumFiles(numFiles); + + if(done is not null) + done(); } } \ No newline at end of file