CSharpTest.Net
Dispose Method
See Also  Example Send Feedback Download Help File
CSharpTest.Net.Library Assembly > CSharpTest.Net.IO Namespace > TransactedCompoundFile Class : Dispose Method

Glossary Item Box

Closes all streams and clears all in-memory data.

Syntax

Visual Basic (Declaration) 
Public Sub Dispose() 
C# 
public void Dispose()

Example

Library/Library.Test/TestTransactedCompoundFile.cs

C#Copy Code
using (TempFile temp = new TempFile())
{
    var options = new TransactedCompoundFile.Options(temp.TempPath) { BlockSize = 512 };

    const int count = 4;
    byte[] sample = new byte[options.MaxWriteSize / 3];
    new Random().NextBytes(sample);

    using (TransactedCompoundFile file = new TransactedCompoundFile(options))
    {
        for (uint h = 1u; h < count; h++)
            Assert.AreEqual(h, file.Create());
        for (uint h = 1u; h < count; h++)
            file.Write(h, sample, 0, sample.Length);
        file.Commit();
    }

    //Corrupts the primary of the first block, and secondary of the last block:
    using (Stream f = temp.Open())
    {
        f.Write(sample, 0, 100);
        f.Seek(-100, SeekOrigin.End);
        f.Write(sample, 0, 100);
    }
    try
    {
        options.LoadingRule = TransactedCompoundFile.LoadingRule.Primary;
        new TransactedCompoundFile(options).Dispose();
        Assert.Fail("Should not load");
    }
    catch (InvalidDataException)
    {
    }
    try
    {
        options.LoadingRule = TransactedCompoundFile.LoadingRule.Secondary;
        new TransactedCompoundFile(options).Dispose();
        Assert.Fail("Should not load");
    }
    catch (InvalidDataException)
    {
    }

    options.LoadingRule = TransactedCompoundFile.LoadingRule.Default;
    using (TransactedCompoundFile file = new TransactedCompoundFile(options))
    {
        for (uint h = 1u; h < count; h++)
            CompareBytes(sample, 0, sample.Length, IOStream.ReadAllBytes(file.Read(h)));
        //Commit fixes corruption
        file.Commit();
    }

    options.LoadingRule = TransactedCompoundFile.LoadingRule.Primary;
    new TransactedCompoundFile(options).Dispose();
    options.LoadingRule = TransactedCompoundFile.LoadingRule.Secondary;
    new TransactedCompoundFile(options).Dispose();
}
VB.NETCopy Code
Using temp As New TempFile()
    Dim options As var = New TransactedCompoundFile.Options(temp.TempPath) With { _
        Key .BlockSize = 512 _
    }

    Const  count As Integer = 4
    Dim sample As Byte() = New Byte(options.MaxWriteSize / 3) {}
    New Random().NextBytes(sample)

    Using file As New TransactedCompoundFile(options)
        Dim h As UInteger = 1UI
        While h < count
            Assert.AreEqual(h, file.Create())
            System.Math.Max(System.Threading.Interlocked.Increment(h),h - 1)
        End While
        Dim h As UInteger = 1UI
        While h < count
            file.Write(h, sample, 0, sample.Length)
            System.Math.Max(System.Threading.Interlocked.Increment(h),h - 1)
        End While
        file.Commit()
    End Using

    'Corrupts the primary of the first block, and secondary of the last block:
    Using f As Stream = temp.Open()
        f.Write(sample, 0, 100)
        f.Seek(-100, SeekOrigin.[End])
        f.Write(sample, 0, 100)
    End Using
    Try
        options.LoadingRule = TransactedCompoundFile.LoadingRule.Primary
        New TransactedCompoundFile(options).Dispose()
        Assert.Fail("Should not load")
    Catch generatedExceptionName As InvalidDataException
    End Try
    Try
        options.LoadingRule = TransactedCompoundFile.LoadingRule.Secondary
        New TransactedCompoundFile(options).Dispose()
        Assert.Fail("Should not load")
    Catch generatedExceptionName As InvalidDataException
    End Try

    options.LoadingRule = TransactedCompoundFile.LoadingRule.[Default]
    Using file As New TransactedCompoundFile(options)
        Dim h As UInteger = 1UI
        While h < count
            CompareBytes(sample, 0, sample.Length, IOStream.ReadAllBytes(file.Read(h)))
            System.Math.Max(System.Threading.Interlocked.Increment(h),h - 1)
        End While
        'Commit fixes corruption
        file.Commit()
    End Using

    options.LoadingRule = TransactedCompoundFile.LoadingRule.Primary
    New TransactedCompoundFile(options).Dispose()
    options.LoadingRule = TransactedCompoundFile.LoadingRule.Secondary
    New TransactedCompoundFile(options).Dispose()
End Using

Requirements

Target Platforms: Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7

See Also

Generated with Document! X 2011 by Innovasys