Sophos.Commands 3.0.7

dotnet add package Sophos.Commands --version 3.0.7                
NuGet\Install-Package Sophos.Commands -Version 3.0.7                
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="Sophos.Commands" Version="3.0.7" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Sophos.Commands --version 3.0.7                
#r "nuget: Sophos.Commands, 3.0.7"                
#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.
// Install Sophos.Commands as a Cake Addin
#addin nuget:?package=Sophos.Commands&version=3.0.7

// Install Sophos.Commands as a Cake Tool
#tool nuget:?package=Sophos.Commands&version=3.0.7                

Commands simplifies coordination of asynchronous and synchronous activities. It works with both task and non-task-based operations. The library is built upon class Command, which represents an action. A Command may be run synchronously or asynchronously, and may be aborted.

ParallelCommands, itself a Command, executes a collection of commands concurrently, and SequentialCommands executes its commands in sequence. Using these classes, it's possible to compose deep levels of coordinated actions. For example, SequentialCommands can hold instances of ParallelCommands, which in turn could hold SequentialCommands, and any other Command-derived object.

PeriodicCommand repeats its action at a given interval, ScheduledCommand runs once at a specific time, and RecurringCommand runs at times that are provided via a callback.

RetryableCommand offers the option to conditionally keep retrying a failed command, FinallyCommand provides a mechanism to ensure a cleanup routine is run regardless of whether a command succeeds or fails, and TimeLimitedCommand fails with a timeout exception if a given duration elapses before the command finishes execution.

All of the above Command classes are simply containers for other Command objects that presumably do something of interest. They can be combined in ways that offer a lot of customization. For example, to make an HttpRequest at a given time, with a timeout and a configurable number of retries, you could create a ScheduledCommand containing a RetryableCommand containing a TimeLimitedCommand containing an HttpRequestCommand.

TaskCommand, DelegateCommand and Command.AsTask() offer easy integration with tasks and delegates.

CommandDispatcher manages asynchronous execution of dynamically generated commands.

The Command class allows registration of ICommandMonitor objects. CommandTracer will write diagnostic output to the debug stream, and CommandLogger will write diagnostic output to file. Using the provided CommandLogViewer app (source available in GitHub), it is possible to see the status of all command executions, including their parent/child relationships.

Example usage can be found here:

The entire source lives here:

Guidelines for developing your own Command-derived class:

     - If the implementation of your command is naturally synchronous, inherit from SyncCommand

     - If the implementation of your command is naturally asynchronous and makes use of tasks (i.e. the Task class), inherit from TaskCommand

     - If the implementation of your command is naturally asynchronous but does not make use of tasks, inherit from AsyncCommand

     - Make your implementation responsive to abort requests if it could take more than a trivial amount of time. To do this, make ocassional calls to Command.CheckAbortFlag() or Command.AbortRequested

A versions for C++ exists at

A help file containing complete documentation exists within this package's contents.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net45 is compatible.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETFramework 4.5

    • No dependencies.
  • .NETStandard 2.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
3.0.7 1,306 5/10/2021
3.0.6 1,110 3/29/2021
3.0.5 1,159 3/23/2021
3.0.4 1,242 3/3/2021
3.0.3 1,339 10/15/2020
3.0.2 1,488 9/30/2019
2.1.3 1,469 8/29/2019
2.1.2 1,440 8/8/2019
2.1.0 1,606 6/7/2019