ConcurrentFileWriter 1.0.2

A class library for managing multi-threaded sequential write access to one or more files.
It is capable of flushing writes from multiple threads in batches by either hitting a specified size threshold or a specified inactivity time limit. It is also possible to write this batching information within the output file(s).
Note: This class should be injected as a single or static instance shared across all process threads.
Files will be locked exclusively from the first Write() call until FlushAndClose() or Dispose() is called (presently one of these *must* be explicitly called to ensure all data is flushed).

The ConcurrentFileWriter class can be found as an extension of System.IO

*** Full debugging source/symbols are available from http://srv.symbolsource.org/pdb/Public

Usage Example:

var cfw = new ConcurrentFileWriter(new ConcurrentFileWriterSettings {
            flushTimeInMilliseconds = 5000,
            flushSizeInBytes = 10000,
            showWriteBatchingMarkers = true
               });

//Pre-lock file (not required)
cfw.Write(@"c:\temp\test.log", null);

//Append a string (byte arrays can also be directly written)
cfw.WriteUtf8Line(@"c:\temp\test.log", "Test Line");

//Flush and unlock specified file (stop managing)
cfw.CloseManagedFile(@"c:\temp\test.log");

//Flush and unlock all managed files
cfw.Dispose();

Install-Package ConcurrentFileWriter -Version 1.0.2
dotnet add package ConcurrentFileWriter --version 1.0.2
<PackageReference Include="ConcurrentFileWriter" Version="1.0.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ConcurrentFileWriter --version 1.0.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Release Notes

*** Still requires an explicit call to FlushAndClose() for a specific managed file or Dispose() on the ConcurrentFileWriter instance at the end of use.

Dependencies

This package has no dependencies.

Version History

Version Downloads Last updated
1.0.2 467 11/30/2015
1.0.1 393 11/30/2015
1.0.0 719 11/28/2015