Redpoint.ProgressMonitor 2025.1208.627

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.1208.627
                    
NuGet\Install-Package Redpoint.ProgressMonitor -Version 2025.1208.627
                    
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.1208.627" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Redpoint.ProgressMonitor" Version="2025.1208.627" />
                    
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.1208.627
                    
#r "nuget: Redpoint.ProgressMonitor, 2025.1208.627"
                    
#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.1208.627
                    
#: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.1208.627
                    
Install as a Cake Addin
#tool nuget:?package=Redpoint.ProgressMonitor&version=2025.1208.627
                    
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 135 9/10/2025
2025.1251.740 136 9/8/2025
2025.1249.408 74 9/6/2025
2025.1245.159 141 9/2/2025
2025.1241.1004 167 8/29/2025
2025.1241.337 181 8/29/2025
2025.1241.335 176 8/29/2025
2025.1239.82 185 8/27/2025
2025.1236.697 165 8/24/2025
2025.1235.897 70 8/23/2025
2025.1234.740 92 8/22/2025
2025.1234.625 100 8/22/2025
2025.1234.484 104 8/22/2025
2025.1234.426 111 8/22/2025
2025.1234.329 115 8/22/2025
2025.1234.304 118 8/22/2025
2025.1234.279 121 8/22/2025
2025.1234.210 125 8/22/2025
2025.1234.185 125 8/22/2025
2025.1234.108 133 8/22/2025
2025.1234.70 128 8/22/2025
2025.1233.957 133 8/21/2025
2025.1233.933 134 8/21/2025
2025.1233.915 128 8/21/2025
2025.1233.885 130 8/21/2025
2025.1233.764 137 8/21/2025
2025.1233.694 133 8/21/2025
2025.1233.677 136 8/21/2025
2025.1233.212 137 8/21/2025
2025.1233.74 129 8/21/2025
2025.1233.72 131 8/21/2025
2025.1233.28 132 8/21/2025
2025.1232.155 135 8/20/2025
2025.1232.154 131 8/20/2025
2025.1232.104 132 8/20/2025
2025.1232.102 133 8/20/2025
2025.1231.1026 133 8/19/2025
2025.1231.941 139 8/19/2025
2025.1231.499 131 8/19/2025
2025.1231.484 132 8/19/2025
2025.1231.297 133 8/19/2025
2025.1230.859 136 8/18/2025
2025.1228.220 68 8/16/2025
2025.1227.934 95 8/15/2025
2025.1227.904 92 8/15/2025
2025.1227.852 92 8/15/2025
2025.1227.816 95 8/15/2025
2025.1227.77 136 8/15/2025
2025.1226.857 139 8/14/2025
2025.1226.472 143 8/14/2025
2025.1226.163 142 8/14/2025
2025.1222.583 142 8/10/2025
2025.1222.562 138 8/10/2025
2025.1222.437 140 8/10/2025
2025.1222.425 136 8/10/2025
2025.1220.271 201 8/8/2025
2025.1220.225 200 8/8/2025
2025.1220.80 210 8/8/2025
2025.1219.568 214 8/7/2025
2025.1219.546 216 8/7/2025
2025.1219.514 214 8/7/2025
2025.1219.513 211 8/7/2025
2025.1219.511 210 8/7/2025
2025.1219.421 214 8/7/2025
2025.1219.377 215 8/7/2025
2025.1219.362 216 8/7/2025
2025.1219.361 212 8/7/2025
2025.1218.1281 216 8/6/2025
2025.1218.1266 214 8/6/2025
2025.1218.1264 215 8/6/2025
2025.1218.1255 216 8/6/2025
2025.1218.1223 216 8/6/2025
2025.1218.1180 215 8/6/2025
2025.1218.1166 209 8/6/2025
2025.1218.1154 212 8/6/2025
2025.1218.1088 217 8/6/2025
2025.1218.595 215 8/6/2025
2025.1218.554 214 8/6/2025
2025.1218.544 215 8/6/2025
2025.1218.523 211 8/6/2025
2025.1218.499 217 8/6/2025
2025.1218.427 221 8/6/2025
2025.1218.415 214 8/6/2025
2025.1218.187 228 8/6/2025
2025.1218.174 224 8/6/2025
2025.1218.148 227 8/6/2025
2025.1218.123 222 8/6/2025
2025.1217.886 228 8/5/2025
2025.1217.560 227 8/5/2025
2025.1217.516 229 8/5/2025
2025.1217.512 229 8/5/2025
2025.1217.503 231 8/5/2025
2025.1216.1103 193 8/4/2025
2025.1216.1025 192 8/4/2025
2025.1216.978 173 8/4/2025
2025.1216.897 170 8/4/2025
2025.1216.893 172 8/4/2025
2025.1216.884 173 8/4/2025
2025.1216.873 169 8/4/2025
2025.1216.824 171 8/4/2025
2025.1216.767 171 8/4/2025
2025.1216.745 176 8/4/2025
2025.1216.411 150 8/4/2025
2025.1216.396 148 8/4/2025
2025.1216.386 149 8/4/2025
2025.1216.357 147 8/4/2025
2025.1216.347 146 8/4/2025
2025.1216.334 148 8/4/2025
2025.1216.319 143 8/4/2025
2025.1215.930 114 8/3/2025
2025.1215.928 117 8/3/2025
2025.1215.911 117 8/3/2025
2025.1215.892 115 8/3/2025
2025.1215.842 116 8/3/2025
2025.1209.1064 105 7/28/2025
2025.1209.1061 99 7/28/2025
2025.1209.1047 98 7/28/2025
2025.1209.1038 101 7/28/2025
2025.1209.1034 99 7/28/2025
2025.1209.948 99 7/28/2025
2025.1209.881 101 7/28/2025
2025.1209.773 108 7/28/2025
2025.1209.765 101 7/28/2025
2025.1209.758 103 7/28/2025
2025.1209.727 104 7/28/2025
2025.1209.658 99 7/28/2025
2025.1209.300 99 7/28/2025
2025.1209.284 101 7/28/2025
2025.1209.264 101 7/28/2025
2025.1209.227 99 7/28/2025
2025.1209.198 100 7/28/2025
2025.1209.179 104 7/28/2025
2025.1208.826 113 7/27/2025
2025.1208.627 74 7/27/2025
2025.1208.617 73 7/27/2025
2025.1208.570 70 7/27/2025
2025.1208.568 70 7/27/2025
2025.1208.566 71 7/27/2025
2025.1206.491 420 7/25/2025
2025.1206.247 451 7/25/2025
2025.1205.230 476 7/24/2025
2025.1203.826 541 7/22/2025
2025.1202.906 498 7/21/2025
2025.1202.904 493 7/21/2025
2025.1202.283 420 7/21/2025
2025.1201.470 242 7/20/2025
2025.1199.287 137 7/18/2025
2025.1198.1048 150 7/17/2025
2025.1198.682 148 7/17/2025
2025.1198.638 150 7/17/2025
2025.1198.574 152 7/17/2025
2025.1198.187 155 7/17/2025
2025.1191.922 159 7/10/2025
2025.1191.235 161 7/10/2025
2025.1190.175 159 7/9/2025
2025.1189.851 162 7/8/2025
2025.1189.841 163 7/8/2025
2025.1187.587 161 7/6/2025
2025.1183.853 156 7/2/2025
2025.1181.644 151 6/30/2025
2025.1175.340 167 6/24/2025
2025.1174.62 157 6/23/2025
2025.1171.352 152 6/20/2025
2025.1169.413 158 6/18/2025
2025.1166.1191 155 6/15/2025
2025.1166.1178 158 6/15/2025
2025.1166.1177 158 6/15/2025
2025.1159.445 138 6/8/2025
2025.1159.364 134 6/8/2025
2025.1159.324 137 6/8/2025
2025.1155.438 161 6/4/2025
2025.1141.1424 164 5/21/2025
2025.1140.383 165 5/20/2025
2025.1140.377 164 5/20/2025
2025.1139.983 167 5/19/2025
2025.1139.952 162 5/19/2025
2025.1139.941 166 5/19/2025
2025.1139.855 166 5/19/2025
2025.1139.850 160 5/19/2025
2025.1139.837 158 5/19/2025
2025.1139.811 160 5/19/2025
2025.1139.806 162 5/19/2025
2025.1139.796 165 5/19/2025
2025.1139.729 163 5/19/2025
2025.1139.719 163 5/19/2025
2025.1139.706 163 5/19/2025
2025.1139.694 160 5/19/2025
2025.1139.679 164 5/19/2025
2025.1139.662 158 5/19/2025
2025.1139.638 153 5/19/2025
2025.1139.628 154 5/19/2025
2025.1139.626 161 5/19/2025
2025.1139.619 158 5/19/2025
2025.1139.605 156 5/19/2025
2025.1139.600 158 5/19/2025
2025.1139.583 158 5/19/2025
2025.1139.573 160 5/19/2025
2025.1139.564 157 5/19/2025
2025.1139.552 159 5/19/2025
2025.1139.543 155 5/19/2025
2025.1138.909 160 5/18/2025
2025.1136.150 230 5/16/2025
2025.1135.267 232 5/15/2025
2025.1135.143 240 5/15/2025
2025.1133.453 242 5/13/2025
2025.1133.351 246 5/13/2025
2025.1133.349 251 5/13/2025
2025.1133.347 243 5/13/2025
2025.1130.236 93 5/10/2025
2025.1129.831 122 5/9/2025
2025.1129.346 163 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 204 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 206 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