Initializes a new instance of the
ZipArchive class.
The code below shows a possible loss of data:
DiskFile source1 = new DiskFile( @"D:\First.txt" );
DiskFile source2 = new DiskFile( @"D:\Second.txt" );
DiskFile file1 = new DiskFile( @"D:\Danger.zip" );
DiskFile file2 = new DiskFile( @"D:\Danger.zip" );
ZipArchive zip1 = new ZipArchive( file1 );
ZipArchive zip2 = new ZipArchive( file2 );
zip1.BeginUpdate();
source1.CopyTo( zip1, true );
zip2.BeginUpdate();
source2.CopyTo( zip2, true );
zip2.EndUpdate(); // Zip file updated with "Second.txt"
zip1.EndUpdate(); // Zip file updated with "First.txt" but "Second.txt" gets lost
The correct way to deal with many instances of a ZipArchive is:
DiskFile source1 = new DiskFile( @"D:\First.txt" );
DiskFile source2 = new DiskFile( @"D:\Second.txt" );
DiskFile singleFile = new DiskFile( @"D:\Danger.zip" );
ZipArchive zip1 = new ZipArchive( singleFile );
ZipArchive zip2 = new ZipArchive( singleFile );
zip1.BeginUpdate();
source1.CopyTo( zip1, true );
zip2.BeginUpdate();
source2.CopyTo( zip2, true );
zip2.EndUpdate(); // Zip file not updated right away
zip1.EndUpdate(); // Zip file updated with both "First.txt" and "Second.txt"
Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2