Redpoint.ProgressMonitor 2025.1232.154

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package Redpoint.ProgressMonitor --version 2025.1232.154
                    
NuGet\Install-Package Redpoint.ProgressMonitor -Version 2025.1232.154
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Redpoint.ProgressMonitor" Version="2025.1232.154" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Redpoint.ProgressMonitor" Version="2025.1232.154" />
                    
Directory.Packages.props
<PackageReference Include="Redpoint.ProgressMonitor" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Redpoint.ProgressMonitor --version 2025.1232.154
                    
#r "nuget: Redpoint.ProgressMonitor, 2025.1232.154"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Redpoint.ProgressMonitor@2025.1232.154
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Redpoint.ProgressMonitor&version=2025.1232.154
                    
Install as a Cake Addin
#tool nuget:?package=Redpoint.ProgressMonitor&version=2025.1232.154
                    
Install as a Cake Tool

Redpoint.ProgressMonitor

This library provides APIs for monitoring and reporting the progress of arbitrary operations in console applications.

Read on for the following examples:

Example for a generic stream

You can monitor an operation that uses a stream like so:

// Inject these services.
IProgressFactory _progressFactory;
IMonitorFactory _monitorFactory;

using (var stream = new FileStream(...))
{
    // Start monitoring.
    var cts = new CancellationTokenSource();
    var progress = _progressFactory.CreateProgressForStream(stream);
    var monitorTask = Task.Run(async () =>
    {
        var monitor = _monitorFactory.CreateByteBasedMonitor();
        await monitor.MonitorAsync(
            progress,
            SystemConsole.ConsoleInformation,
            SystemConsole.WriteProgressToConsole,
            cts.Token);
    });

    // e.g. hash the stream.
    byte[] hashBytes;
    using (var hasher = SHA256.Create())
    {
        hashBytes = await hasher.ComputeHashAsync(stream);
    }

    // Stop monitoring.
    await SystemConsole.CancelAndWaitForConsoleMonitoringTaskAsync(monitorTask, cts);
}

Example for a HTTP download

If you're reporting progress on a HTTP stream, there's a few extra things to keep in mind:

  • You need to pass HttpCompletionOption.ResponseHeadersRead as the completion option, or HttpClient will buffer the entire response by default.
  • You need to wrap the stream you read from in PositionAwareStream, which is a class provided by this library. Since the underlying HTTP stream does not support Position or Length, this wrapping stream tracks the position as the stream is read from and allows the length to be passed in as a constructor parameter (which you should set based on the Content-Length header).

Below is a concise example of how to show the progress of downloading a file:

using (var client = new HttpClient())
{
    using (var target = new FileStream(targetPath, FileMode.Create, FileAccess.Write, FileShare.None))
    {
        var response = await client.GetAsync(downloadUrl, HttpCompletionOption.ResponseHeadersRead);
        using (var stream = new PositionAwareStream(
            await response.Content.ReadAsStreamAsync(),
            response.Content.Headers.ContentLength!.Value))
        {
            var cts = new CancellationTokenSource();
            var progress = _progressFactory.CreateProgressForStream(stream);
            var monitorTask = Task.Run(async () =>
            {
                var monitor = _monitorFactory.CreateByteBasedMonitor();
                await monitor.MonitorAsync(
                    progress,
                    SystemConsole.ConsoleInformation,
                    SystemConsole.WriteProgressToConsole,
                    cts.Token);
            });

            await stream.CopyToAsync(target);
            
            await SystemConsole.CancelAndWaitForConsoleMonitoringTaskAsync(monitorTask, cts);
        }
    }
}

The SystemConsole static class

The SystemConsole type provides common values for monitoring parameters, such as the current console information and rendering progress information to the console. You should replace the static values in the examples above with your own callbacks and values if you're not rendering progress to the console.

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Redpoint.ProgressMonitor:

Package Downloads
Redpoint.PackageManagement

Provides APIs for installing, upgrading and uninstalling packages with WinGet and Homebrew.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2025.1253.415 148 9/10/2025
2025.1251.740 147 9/8/2025
2025.1249.408 84 9/6/2025
2025.1245.159 149 9/2/2025
2025.1241.1004 175 8/29/2025
2025.1241.337 192 8/29/2025
2025.1241.335 187 8/29/2025
2025.1239.82 193 8/27/2025
2025.1236.697 175 8/24/2025
2025.1235.897 81 8/23/2025
2025.1234.740 103 8/22/2025
2025.1234.625 111 8/22/2025
2025.1234.484 115 8/22/2025
2025.1234.426 122 8/22/2025
2025.1234.329 126 8/22/2025
2025.1234.304 129 8/22/2025
2025.1234.279 132 8/22/2025
2025.1234.210 136 8/22/2025
2025.1234.185 136 8/22/2025
2025.1234.108 141 8/22/2025
2025.1234.70 141 8/22/2025
2025.1233.957 148 8/21/2025
2025.1233.933 145 8/21/2025
2025.1233.915 139 8/21/2025
2025.1233.885 141 8/21/2025
2025.1233.764 150 8/21/2025
2025.1233.694 144 8/21/2025
2025.1233.677 146 8/21/2025
2025.1233.212 146 8/21/2025
2025.1233.74 139 8/21/2025
2025.1233.72 142 8/21/2025
2025.1233.28 140 8/21/2025
2025.1232.155 148 8/20/2025
2025.1232.154 142 8/20/2025
2025.1232.104 140 8/20/2025
2025.1232.102 143 8/20/2025
2025.1231.1026 145 8/19/2025
2025.1231.941 149 8/19/2025
2025.1231.499 140 8/19/2025
2025.1231.484 143 8/19/2025
2025.1231.297 141 8/19/2025
2025.1230.859 144 8/18/2025
2025.1228.220 79 8/16/2025
2025.1227.934 106 8/15/2025
2025.1227.904 103 8/15/2025
2025.1227.852 100 8/15/2025
2025.1227.816 106 8/15/2025
2025.1227.77 144 8/15/2025
2025.1226.857 150 8/14/2025
2025.1226.472 154 8/14/2025
2025.1226.163 154 8/14/2025
2025.1222.583 153 8/10/2025
2025.1222.562 151 8/10/2025
2025.1222.437 151 8/10/2025
2025.1222.425 147 8/10/2025
2025.1220.271 214 8/8/2025
2025.1220.225 211 8/8/2025
2025.1220.80 220 8/8/2025
2025.1219.568 225 8/7/2025
2025.1219.546 227 8/7/2025
2025.1219.514 224 8/7/2025
2025.1219.513 219 8/7/2025
2025.1219.511 218 8/7/2025
2025.1219.421 225 8/7/2025
2025.1219.377 222 8/7/2025
2025.1219.362 227 8/7/2025
2025.1219.361 223 8/7/2025
2025.1218.1281 227 8/6/2025
2025.1218.1266 222 8/6/2025
2025.1218.1264 226 8/6/2025
2025.1218.1255 227 8/6/2025
2025.1218.1223 228 8/6/2025
2025.1218.1180 223 8/6/2025
2025.1218.1166 219 8/6/2025
2025.1218.1154 223 8/6/2025
2025.1218.1088 227 8/6/2025
2025.1218.595 223 8/6/2025
2025.1218.554 226 8/6/2025
2025.1218.544 224 8/6/2025
2025.1218.523 223 8/6/2025
2025.1218.499 230 8/6/2025
2025.1218.427 230 8/6/2025
2025.1218.415 224 8/6/2025
2025.1218.187 239 8/6/2025
2025.1218.174 235 8/6/2025
2025.1218.148 238 8/6/2025
2025.1218.123 233 8/6/2025
2025.1217.886 239 8/5/2025
2025.1217.560 237 8/5/2025
2025.1217.516 239 8/5/2025
2025.1217.512 240 8/5/2025
2025.1217.503 244 8/5/2025
2025.1216.1103 201 8/4/2025
2025.1216.1025 197 8/4/2025
2025.1216.978 178 8/4/2025
2025.1216.897 175 8/4/2025
2025.1216.893 174 8/4/2025
2025.1216.884 178 8/4/2025
2025.1216.873 174 8/4/2025
2025.1216.824 176 8/4/2025
2025.1216.767 176 8/4/2025
2025.1216.745 181 8/4/2025
2025.1216.411 155 8/4/2025
2025.1216.396 154 8/4/2025
2025.1216.386 157 8/4/2025
2025.1216.357 152 8/4/2025
2025.1216.347 151 8/4/2025
2025.1216.334 156 8/4/2025
2025.1216.319 148 8/4/2025
2025.1215.930 119 8/3/2025
2025.1215.928 122 8/3/2025
2025.1215.911 125 8/3/2025
2025.1215.892 120 8/3/2025
2025.1215.842 121 8/3/2025
2025.1209.1064 110 7/28/2025
2025.1209.1061 103 7/28/2025
2025.1209.1047 104 7/28/2025
2025.1209.1038 106 7/28/2025
2025.1209.1034 104 7/28/2025
2025.1209.948 104 7/28/2025
2025.1209.881 106 7/28/2025
2025.1209.773 113 7/28/2025
2025.1209.765 106 7/28/2025
2025.1209.758 108 7/28/2025
2025.1209.727 109 7/28/2025
2025.1209.658 104 7/28/2025
2025.1209.300 106 7/28/2025
2025.1209.284 112 7/28/2025
2025.1209.264 107 7/28/2025
2025.1209.227 118 7/28/2025
2025.1209.198 114 7/28/2025
2025.1209.179 125 7/28/2025
2025.1208.826 138 7/27/2025
2025.1208.627 98 7/27/2025
2025.1208.617 98 7/27/2025
2025.1208.570 95 7/27/2025
2025.1208.568 96 7/27/2025
2025.1208.566 94 7/27/2025
2025.1206.491 429 7/25/2025
2025.1206.247 459 7/25/2025
2025.1205.230 480 7/24/2025
2025.1203.826 546 7/22/2025
2025.1202.906 503 7/21/2025
2025.1202.904 495 7/21/2025
2025.1202.283 425 7/21/2025
2025.1201.470 249 7/20/2025
2025.1199.287 144 7/18/2025
2025.1198.1048 155 7/17/2025
2025.1198.682 153 7/17/2025
2025.1198.638 155 7/17/2025
2025.1198.574 157 7/17/2025
2025.1198.187 161 7/17/2025
2025.1191.922 163 7/10/2025
2025.1191.235 166 7/10/2025
2025.1190.175 164 7/9/2025
2025.1189.851 167 7/8/2025
2025.1189.841 165 7/8/2025
2025.1187.587 166 7/6/2025
2025.1183.853 161 7/2/2025
2025.1181.644 156 6/30/2025
2025.1175.340 173 6/24/2025
2025.1174.62 165 6/23/2025
2025.1171.352 159 6/20/2025
2025.1169.413 163 6/18/2025
2025.1166.1191 161 6/15/2025
2025.1166.1178 163 6/15/2025
2025.1166.1177 163 6/15/2025
2025.1159.445 143 6/8/2025
2025.1159.364 139 6/8/2025
2025.1159.324 142 6/8/2025
2025.1155.438 166 6/4/2025
2025.1141.1424 170 5/21/2025
2025.1140.383 170 5/20/2025
2025.1140.377 169 5/20/2025
2025.1139.983 172 5/19/2025
2025.1139.952 167 5/19/2025
2025.1139.941 172 5/19/2025
2025.1139.855 168 5/19/2025
2025.1139.850 165 5/19/2025
2025.1139.837 163 5/19/2025
2025.1139.811 162 5/19/2025
2025.1139.806 168 5/19/2025
2025.1139.796 167 5/19/2025
2025.1139.729 168 5/19/2025
2025.1139.719 168 5/19/2025
2025.1139.706 168 5/19/2025
2025.1139.694 165 5/19/2025
2025.1139.679 169 5/19/2025
2025.1139.662 163 5/19/2025
2025.1139.638 158 5/19/2025
2025.1139.628 159 5/19/2025
2025.1139.626 166 5/19/2025
2025.1139.619 163 5/19/2025
2025.1139.605 161 5/19/2025
2025.1139.600 164 5/19/2025
2025.1139.583 163 5/19/2025
2025.1139.573 162 5/19/2025
2025.1139.564 162 5/19/2025
2025.1139.552 164 5/19/2025
2025.1139.543 157 5/19/2025
2025.1138.909 166 5/18/2025
2025.1136.150 238 5/16/2025
2025.1135.267 237 5/15/2025
2025.1135.143 245 5/15/2025
2025.1133.453 247 5/13/2025
2025.1133.351 250 5/13/2025
2025.1133.349 256 5/13/2025
2025.1133.347 248 5/13/2025
2025.1130.236 98 5/10/2025
2025.1129.831 127 5/9/2025
2025.1129.346 627 5/9/2025
2023.1176.407 230 6/25/2023
2023.1176.396 192 6/25/2023
2023.1176.363 203 6/25/2023
2023.1176.360 239 6/25/2023
2023.1175.638 198 6/24/2023
2023.1170.907 193 6/19/2023
2023.1170.900 195 6/19/2023
2023.1167.562 198 6/16/2023
2023.1167.556 203 6/16/2023
2023.1167.496 215 6/16/2023
2023.1166.1008 218 6/15/2023
2023.1166.938 190 6/15/2023
2023.1166.713 210 6/15/2023
2023.1166.699 199 6/15/2023
2023.1165.1065 208 6/14/2023
2023.1165.888 204 6/14/2023
2023.1165.878 206 6/14/2023
2023.1165.861 195 6/14/2023
2023.1165.828 205 6/14/2023
2023.1165.686 217 6/14/2023
2023.1165.653 199 6/14/2023
2023.377.1003 290 5/31/2023
2023.377.909 222 5/31/2023
2023.377.558 219 5/31/2023
2023.365.1417 267 5/30/2023
2023.365.1350 207 5/30/2023
2023.365.1327 203 5/30/2023
2023.365.1306 224 5/30/2023
2023.365.1198 231 5/30/2023
2023.365.1046 209 5/30/2023
2023.365.710 208 5/30/2023
2023.365.703 220 5/30/2023
2023.365.336 210 5/30/2023
2023.174.636 207 6/14/2023
2023.174.616 190 6/14/2023
2023.174.442 206 6/14/2023
2023.162.1243 199 6/13/2023
2023.162.1225 206 6/13/2023
2023.162.1023 193 6/13/2023
2023.162.948 198 6/13/2023
2023.162.865 203 6/13/2023
2023.162.770 227 6/13/2023
2023.162.734 216 6/13/2023
2023.162.701 209 6/13/2023
2023.162.470 218 6/13/2023
2023.162.418 202 6/13/2023
2023.150.1142 201 6/12/2023
2023.150.1121 205 6/12/2023
2023.150.1095 206 6/12/2023
2023.150.1081 192 6/12/2023
2023.150.1066 201 6/12/2023
2023.150.999 194 6/12/2023
2023.150.916 220 6/12/2023
2023.150.865 204 6/12/2023
2023.150.831 204 6/12/2023
2023.150.774 203 6/12/2023
2023.150.613 201 6/12/2023
2023.150.558 213 6/12/2023
2023.150.456 225 6/12/2023
2023.150.450 227 6/12/2023
2023.150.220 225 6/12/2023
2023.150.179 230 6/12/2023
2023.150.167 231 6/12/2023
2023.138.864 215 6/11/2023
2023.138.837 210 6/11/2023
2023.138.363 220 6/11/2023
2023.138.224 250 6/11/2023
2023.138.213 194 6/11/2023
2023.126.1167 223 6/11/2023
2023.126.1148 218 6/10/2023
2023.126.838 227 6/10/2023
2023.126.794 222 6/10/2023
2023.126.745 222 6/10/2023
2023.126.714 234 6/10/2023
2023.126.662 231 6/10/2023
2023.114.544 207 6/9/2023
2023.114.351 217 6/9/2023
2023.90.1030 221 6/7/2023
2023.90.1009 203 6/7/2023
2023.54.1152 204 6/4/2023
2023.54.419 226 6/4/2023
2023.54.198 206 6/4/2023
2023.54.60 189 6/4/2023
2023.54.48 221 6/4/2023
2023.42.745 207 6/3/2023
2023.30.1191 207 6/2/2023
2023.30.1172 219 6/2/2023
2023.30.1163 213 6/2/2023
2023.30.1147 217 6/2/2023
2023.30.1136 234 6/2/2023
2023.30.765 228 6/2/2023
2023.30.761 215 6/2/2023
2023.30.747 229 6/2/2023
2023.30.734 216 6/2/2023