Поделиться через


LogRecordSequence.Append Метод

Определение

Регистрирует запись журнала в IRecordSequence.

Перегрузки

Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection)

Добавляет запись журнала в IRecordSequence, используя пространство, которое было ранее зарезервировано в последовательности. Этот метод не может быть унаследован.

Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection)

Добавляет запись журнала в IRecordSequence, используя пространство, которое было ранее зарезервировано в последовательности. Этот метод не может быть унаследован.

Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions)

Регистрирует запись журнала в LogRecordSequence. Этот метод не может быть унаследован.

Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions)

Добавляет запись журнала в IRecordSequence. Этот метод не может быть унаследован.

Примеры

В этом примере показано использование элемента Append.

    // Append records. Appending three records.
    public void AppendRecords()
    {
        Console.WriteLine("Appending Log Records...");
        SequenceNumber previous = SequenceNumber.Invalid;

        previous = sequence.Append(CreateData("Hello World!"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush);
        previous = sequence.Append(CreateData("This is my first Logging App"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush);
        previous = sequence.Append(CreateData("Using LogRecordSequence..."), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush);

        Console.WriteLine("Done...");
    }
' Append records. Appending three records.  
Public Sub AppendRecords()
    Console.WriteLine("Appending Log Records...")
    Dim previous As SequenceNumber = SequenceNumber.Invalid

    previous = sequence.Append(CreateData("Hello World!"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)
    previous = sequence.Append(CreateData("This is my first Logging App"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)
    previous = sequence.Append(CreateData("Using LogRecordSequence..."), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)

    Console.WriteLine("Done...")
End Sub

Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection)

Добавляет запись журнала в IRecordSequence, используя пространство, которое было ранее зарезервировано в последовательности. Этот метод не может быть унаследован.

public:
 virtual System::IO::Log::SequenceNumber Append(ArraySegment<System::Byte> data, System::IO::Log::SequenceNumber nextUndoRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions, System::IO::Log::ReservationCollection ^ reservations);
public System.IO.Log.SequenceNumber Append (ArraySegment<byte> data, System.IO.Log.SequenceNumber nextUndoRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions, System.IO.Log.ReservationCollection reservations);
abstract member Append : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection -> System.IO.Log.SequenceNumber
override this.Append : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection -> System.IO.Log.SequenceNumber
Public Function Append (data As ArraySegment(Of Byte), nextUndoRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservations As ReservationCollection) As SequenceNumber

Параметры

data
ArraySegment<Byte>

Список фрагментов массива байтов, которые будут сцеплены и добавлены в качестве записи.

nextUndoRecord
SequenceNumber

Порядковый номер следующей записи в порядке, заданном пользователем.

previousRecord
SequenceNumber

Порядковый номер следующей записи в обратном порядке.

recordAppendOptions
RecordAppendOptions

Допустимое значение объекта RecordAppendOptions, задающего, как должны записываться данные.

reservations
ReservationCollection

Коллекция ReservationCollection, содержащая резервирование, которое следует использовать для данной записи.

Возвращаемое значение

Порядковый номер добавленной в журнал записи.

Реализации

Исключения

Значение параметра userRecord или previousRecord не является допустимым для этой последовательности.

-или-

Невозможно добавить параметр data, так как его размеры превышают максимальный размер записи.

-или-

Параметр reservations не был создан этой последовательностью записи.

Один или несколько аргументов имеют значение null.

Значение параметраuserRecord или previousRecord не лежит между основным и последним порядковыми номерами этой последовательности.

Не удалось выполнить запрос, так как возникла неожиданная ошибка ввода-вывода.

-или-

Выполнить запрос невозможно из-за ошибки устройства ввода-вывода.

Невозможно выполнить операцию, поскольку последовательность записей была открыта с доступом только для чтения.

Метод был вызван после удаления последовательности.

Недостаточно памяти, чтобы продолжить выполнение программы.

Последовательность записей заполнена.

Доступ к заданной последовательности журнала запрещен операционной системой.

В data не удается найти резервирование, достаточное для размещения параметра reservations.

Комментарии

Данные, содержащиеся в параметре data, будут сцеплены в единый массив байтов для добавления в качестве записи. Однако не делается допущение об обратном разделении данных на фрагменты массива при чтении записи.

Добавленная запись будет занимать пространство, ранее зарезервированное с помощью резервирования, заданного параметром reservations. Если выполнить добавление удается, оно займет минимальную область резервирования, в которой поместятся данные, а эта область резервирования будет удалена из коллекции.

Обычно этот метод завершает работу до того, как запись будет записана. Чтобы запись точно была записана, либо укажите флаг ForceFlush с помощью параметра recordAppendOptions, либо вызовите метод Flush.

Применяется к

Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection)

Добавляет запись журнала в IRecordSequence, используя пространство, которое было ранее зарезервировано в последовательности. Этот метод не может быть унаследован.

public:
 virtual System::IO::Log::SequenceNumber Append(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ data, System::IO::Log::SequenceNumber userRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions, System::IO::Log::ReservationCollection ^ reservations);
public System.IO.Log.SequenceNumber Append (System.Collections.Generic.IList<ArraySegment<byte>> data, System.IO.Log.SequenceNumber userRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions, System.IO.Log.ReservationCollection reservations);
abstract member Append : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection -> System.IO.Log.SequenceNumber
override this.Append : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection -> System.IO.Log.SequenceNumber
Public Function Append (data As IList(Of ArraySegment(Of Byte)), userRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservations As ReservationCollection) As SequenceNumber

Параметры

data
IList<ArraySegment<Byte>>

Список фрагментов массива байтов, которые будут сцеплены и добавлены в качестве записи.

userRecord
SequenceNumber

Порядковый номер следующей записи в порядке, заданном пользователем.

previousRecord
SequenceNumber

Порядковый номер следующей записи в обратном порядке.

recordAppendOptions
RecordAppendOptions

Допустимое значение объекта RecordAppendOptions, задающего, как должны записываться данные.

reservations
ReservationCollection

Коллекция ReservationCollection, содержащая резервирование, которое следует использовать для данной записи.

Возвращаемое значение

Порядковый номер добавленной в журнал записи.

Реализации

Исключения

Значение параметра userRecord или previousRecord не является допустимым для этой последовательности.

-или-

Невозможно добавить параметр data, так как его размеры превышают максимальный размер записи.

-или-

Параметр reservations не был создан этой последовательностью записи.

Один или несколько аргументов имеют значение null.

Значение параметраuserRecord или previousRecord не лежит между основным и последним порядковыми номерами этой последовательности.

Не удалось выполнить запрос, так как возникла неожиданная ошибка ввода-вывода.

-или-

Выполнить запрос невозможно из-за ошибки устройства ввода-вывода.

Невозможно выполнить операцию, поскольку последовательность записей была открыта с доступом только для чтения.

Метод был вызван после удаления последовательности.

Недостаточно памяти, чтобы продолжить выполнение программы.

Последовательность записей заполнена.

Доступ к заданной последовательности журнала запрещен операционной системой.

В data не удается найти резервирование, достаточное для размещения параметра reservations.

Комментарии

Данные, содержащиеся в параметре data, будут сцеплены в единый массив байтов для добавления в качестве записи. Однако не делается допущение об обратном разделении данных на фрагменты массива при чтении записи.

Добавленная запись будет занимать пространство, ранее зарезервированное с помощью резервирования, заданного параметром reservations. Если выполнить добавление удается, оно займет минимальную область резервирования, в которой поместятся данные, а эта область резервирования будет удалена из коллекции.

Обычно этот метод завершает работу до того, как запись будет записана. Чтобы запись точно была записана, либо укажите флаг ForceFlush с помощью параметра recordAppendOptions, либо вызовите метод Flush.

Применяется к

Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions)

Регистрирует запись журнала в LogRecordSequence. Этот метод не может быть унаследован.

public:
 virtual System::IO::Log::SequenceNumber Append(ArraySegment<System::Byte> data, System::IO::Log::SequenceNumber nextUndoRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions);
public System.IO.Log.SequenceNumber Append (ArraySegment<byte> data, System.IO.Log.SequenceNumber nextUndoRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions);
abstract member Append : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions -> System.IO.Log.SequenceNumber
override this.Append : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions -> System.IO.Log.SequenceNumber
Public Function Append (data As ArraySegment(Of Byte), nextUndoRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions) As SequenceNumber

Параметры

data
ArraySegment<Byte>

Список фрагментов массива байтов, которые будут сцеплены и добавлены в качестве записи.

nextUndoRecord
SequenceNumber

Порядковый номер следующей записи в порядке, заданном пользователем.

previousRecord
SequenceNumber

Порядковый номер следующей записи в обратном порядке.

recordAppendOptions
RecordAppendOptions

Допустимое значение объекта RecordAppendOptions, задающего, как должны записываться данные.

Возвращаемое значение

Порядковый номер добавленной в журнал записи.

Реализации

Исключения

Значение параметра userRecord или previousRecord не является допустимым для этой последовательности.

-или-

Невозможно добавить параметр data, так как его размеры превышают максимальный размер записи.

-или-

Параметр reservations не был создан этой последовательностью записи.

Один или несколько аргументов имеют значение null.

Значение параметраuserRecord или previousRecord не лежит между основным и последним порядковыми номерами этой последовательности.

Не удалось выполнить запрос, так как возникла неожиданная ошибка ввода-вывода.

-или-

Выполнить запрос невозможно из-за ошибки устройства ввода-вывода.

Невозможно выполнить операцию, поскольку последовательность записей была открыта с доступом только для чтения.

Метод был вызван после удаления последовательности.

Недостаточно памяти, чтобы продолжить выполнение программы.

Последовательность записей заполнена.

Доступ к заданной последовательности журнала запрещен операционной системой.

Примеры

В следующем примере показано, как использовать этот метод для добавления записи журнала в последовательность.

// Start Appending in two streams with interleaving appends.

        SequenceNumber previous1 = SequenceNumber.Invalid;
        SequenceNumber previous2 = SequenceNumber.Invalid;

        Console.WriteLine("Appending interleaving records in stream1 and stream2...");
        Console.WriteLine();
// Append two records in stream1.
        previous1 = sequence1.Append(
            CreateData("MyLogStream1: Hello World!"),
            SequenceNumber.Invalid,
            SequenceNumber.Invalid,
            RecordAppendOptions.ForceFlush);
        previous1 = sequence1.Append(
            CreateData("MyLogStream1: This is my first Logging App"),
            previous1,
            previous1,
            RecordAppendOptions.ForceFlush);

// Append two records in stream2.
        previous2 = sequence2.Append(
            CreateData("MyLogStream2: Hello World!"),
            SequenceNumber.Invalid,
            SequenceNumber.Invalid,
            RecordAppendOptions.ForceFlush);
        previous2 = sequence2.Append(
            CreateData("MyLogStream2: This is my first Logging App"),
            previous2,
            previous2,
            RecordAppendOptions.ForceFlush);

// Append the third record in stream1.
        previous1 = sequence1.Append(CreateData(
            "MyLogStream1: Using LogRecordSequence..."),
            previous1,
            previous1,
            RecordAppendOptions.ForceFlush);
        
// Append the third record in stream2.
        previous2 = sequence2.Append(
            CreateData("MyLogStream2: Using LogRecordSequence..."),
            previous2,
            previous2,
            RecordAppendOptions.ForceFlush);
' Start Appending in two streams with interleaving appends.

        Dim previous1 As SequenceNumber = SequenceNumber.Invalid
        Dim previous2 As SequenceNumber = SequenceNumber.Invalid

        Console.WriteLine("Appending interleaving records in stream1 and stream2...")
        Console.WriteLine()
' Append two records in stream1.
        previous1 = sequence1.Append(CreateData("MyLogStream1: Hello World!"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)
        previous1 = sequence1.Append(CreateData("MyLogStream1: This is my first Logging App"), previous1, previous1, RecordAppendOptions.ForceFlush)

' Append two records in stream2.
        previous2 = sequence2.Append(CreateData("MyLogStream2: Hello World!"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)
        previous2 = sequence2.Append(CreateData("MyLogStream2: This is my first Logging App"), previous2, previous2, RecordAppendOptions.ForceFlush)

' Append the third record in stream1.
        previous1 = sequence1.Append(CreateData("MyLogStream1: Using LogRecordSequence..."), previous1, previous1, RecordAppendOptions.ForceFlush)

' Append the third record in stream2.
        previous2 = sequence2.Append(CreateData("MyLogStream2: Using LogRecordSequence..."), previous2, previous2, RecordAppendOptions.ForceFlush)

Комментарии

Данные, содержащиеся в параметре data, будут сцеплены в единый массив байтов для добавления в качестве записи. Однако не делается допущение об обратном разделении данных на фрагменты массива при чтении записи.

Обычно этот метод завершает работу до того, как запись будет записана. Чтобы запись точно была записана, либо укажите флаг ForceFlush с помощью параметра recordAppendOptions, либо вызовите метод Flush.

Применяется к

Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions)

Добавляет запись журнала в IRecordSequence. Этот метод не может быть унаследован.

public:
 virtual System::IO::Log::SequenceNumber Append(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ data, System::IO::Log::SequenceNumber userRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions);
public System.IO.Log.SequenceNumber Append (System.Collections.Generic.IList<ArraySegment<byte>> data, System.IO.Log.SequenceNumber userRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions);
abstract member Append : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions -> System.IO.Log.SequenceNumber
override this.Append : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions -> System.IO.Log.SequenceNumber
Public Function Append (data As IList(Of ArraySegment(Of Byte)), userRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions) As SequenceNumber

Параметры

data
IList<ArraySegment<Byte>>

Список фрагментов массива байтов, которые будут сцеплены и добавлены в качестве записи.

userRecord
SequenceNumber

Порядковый номер следующей записи в порядке, заданном пользователем.

previousRecord
SequenceNumber

Порядковый номер следующей записи в обратном порядке.

recordAppendOptions
RecordAppendOptions

Допустимое значение объекта RecordAppendOptions, задающего, как должны записываться данные.

Возвращаемое значение

Порядковый номер добавленной в журнал записи.

Реализации

Исключения

Значение параметра userRecord или previousRecord не является допустимым для этой последовательности.

-или-

Невозможно добавить параметр data, так как его размеры превышают максимальный размер записи.

-или-

Параметр reservations не был создан этой последовательностью записи.

Один или несколько аргументов имеют значение null.

Значение параметраuserRecord или previousRecord не лежит между основным и последним порядковыми номерами этой последовательности.

Не удалось выполнить запрос, так как возникла неожиданная ошибка ввода-вывода.

-или-

Выполнить запрос невозможно из-за ошибки устройства ввода-вывода.

Невозможно выполнить операцию, поскольку последовательность записей была открыта с доступом только для чтения.

Метод был вызван после удаления последовательности.

Недостаточно памяти, чтобы продолжить выполнение программы.

Последовательность записей заполнена.

Доступ к заданной последовательности журнала запрещен операционной системой.

Комментарии

Данные, содержащиеся в параметре data, будут сцеплены в единый массив байтов для добавления в качестве записи. Однако не делается допущение об обратном разделении данных на фрагменты массива при чтении записи.

Обычно этот метод завершает работу до того, как запись будет записана. Чтобы запись точно была записана, либо укажите флаг ForceFlush с помощью параметра recordAppendOptions, либо вызовите метод Flush.

Применяется к