LogRecordSequence.Append Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zapisuje rekord dziennika w obiekcie IRecordSequence.
Przeciążenia
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection) |
Dołącza rekord dziennika do IRecordSequenceelementu , używając wcześniej zarezerwowanego miejsca w sekwencji. Nie można dziedziczyć tej metody. |
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection) |
Dołącza rekord dziennika do IRecordSequenceelementu , używając wcześniej zarezerwowanego miejsca w sekwencji. Nie można dziedziczyć tej metody. |
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions) |
Zapisuje rekord dziennika w obiekcie LogRecordSequence. Nie można dziedziczyć tej metody. |
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions) |
Dołącza rekord dziennika do elementu IRecordSequence. Nie można dziedziczyć tej metody. |
Przykłady
W tym przykładzie pokazano, jak używać Append elementu członkowskiego
// 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)
Dołącza rekord dziennika do IRecordSequenceelementu , używając wcześniej zarezerwowanego miejsca w sekwencji. Nie można dziedziczyć tej metody.
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
Parametry
- data
- ArraySegment<Byte>
Lista segmentów tablic bajtowych, które będą łączone i dołączane jako rekord.
- nextUndoRecord
- SequenceNumber
Numer sekwencji następnego rekordu w podanej przez użytkownika kolejności.
- previousRecord
- SequenceNumber
Numer sekwencji następnego rekordu w poprzedniej kolejności.
- recordAppendOptions
- RecordAppendOptions
Prawidłowa wartość określająca RecordAppendOptions sposób zapisywania danych.
- reservations
- ReservationCollection
Element ReservationCollection zawierający rezerwację, która powinna być używana dla tego rekordu.
Zwraca
Numer sekwencji dołączonego rekordu dziennika.
Implementuje
Wyjątki
userRecord
lub previousRecord
jest nieprawidłowy dla tej sekwencji.
-lub-
data
nie można dołączyć, ponieważ jest on większy niż maksymalny rozmiar rekordu.
-lub-
reservations
ta sekwencja rekordów nie została utworzona.
Co najmniej jeden argument to null
.
userRecord
lub previousRecord
nie znajduje się między numerami podstawowymi i ostatnimi sekwencjami tej sekwencji.
Nie można wykonać żądania z powodu nieoczekiwanego wyjątku we/wy.
-lub-
Nie można wykonać żądania z powodu błędu urządzenia we/wy.
Nie można wykonać operacji, ponieważ sekwencja rekordów została otwarta z dostępem tylko do odczytu.
Metoda została wywołana po usunięciu sekwencji.
Za mało pamięci, aby kontynuować wykonywanie programu.
Sekwencja rekordów jest pełna.
Dostęp do określonej sekwencji dzienników jest odrzucany przez system operacyjny.
Nie można znaleźć rezerwacji wystarczająco dużej, aby zmieścić się data
w pliku reservations
.
Uwagi
Dane zawarte w parametrze data
będą łączone w jedną tablicę bajtów do dołączania jako rekordu. Jednak podczas odczytywania rekordu nie jest wprowadzana żadna aprowizacja dzielenia danych z powrotem na segmenty tablic.
Dołączony rekord będzie zużywać miejsce, które zostało wcześniej zarezerwowane, przy użyciu rezerwacji określonej przez reservations
parametr . Jeśli dołączanie zakończy się pomyślnie, będzie korzystać z najmniejszego obszaru rezerwacji, który może przechowywać dane, a obszar rezerwacji zostanie usunięty z kolekcji.
Zwykle ta metoda kończy się przed zapisem rekordu. Aby upewnić się, że rekord został zapisany, określ ForceFlush flagę przy użyciu parametru recordAppendOptions
lub wywołaj metodę Flush .
Dotyczy
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection)
Dołącza rekord dziennika do IRecordSequenceelementu , używając wcześniej zarezerwowanego miejsca w sekwencji. Nie można dziedziczyć tej metody.
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
Parametry
- data
- IList<ArraySegment<Byte>>
Lista segmentów tablic bajtowych, które będą łączone i dołączane jako rekord.
- userRecord
- SequenceNumber
Numer sekwencji następnego rekordu w podanej przez użytkownika kolejności.
- previousRecord
- SequenceNumber
Numer sekwencji następnego rekordu w poprzedniej kolejności.
- recordAppendOptions
- RecordAppendOptions
Prawidłowa wartość określająca RecordAppendOptions sposób zapisywania danych.
- reservations
- ReservationCollection
Element ReservationCollection zawierający rezerwację, która powinna być używana dla tego rekordu.
Zwraca
Numer sekwencji dołączonego rekordu dziennika.
Implementuje
Wyjątki
userRecord
lub previousRecord
jest nieprawidłowy dla tej sekwencji.
-lub-
data
nie można dołączyć, ponieważ jest on większy niż maksymalny rozmiar rekordu.
-lub-
reservations
ta sekwencja rekordów nie została utworzona.
Co najmniej jeden argument to null
.
userRecord
lub previousRecord
nie znajduje się między numerami podstawowymi i ostatnimi sekwencjami tej sekwencji.
Nie można wykonać żądania z powodu nieoczekiwanego wyjątku we/wy.
-lub-
Nie można wykonać żądania z powodu błędu urządzenia we/wy.
Nie można wykonać operacji, ponieważ sekwencja rekordów została otwarta z dostępem tylko do odczytu.
Metoda została wywołana po usunięciu sekwencji.
Za mało pamięci, aby kontynuować wykonywanie programu.
Sekwencja rekordów jest pełna.
Dostęp do określonej sekwencji dzienników jest odrzucany przez system operacyjny.
Nie można znaleźć rezerwacji wystarczająco dużej, aby zmieścić się data
w pliku reservations
.
Uwagi
Dane zawarte w parametrze data
będą łączone w jedną tablicę bajtów do dołączania jako rekordu. Jednak podczas odczytywania rekordu nie jest wprowadzana żadna aprowizacja dzielenia danych z powrotem na segmenty tablic.
Dołączony rekord będzie zużywać miejsce, które zostało wcześniej zarezerwowane, przy użyciu rezerwacji określonej przez reservations
parametr . Jeśli dołączanie zakończy się pomyślnie, będzie korzystać z najmniejszego obszaru rezerwacji, który może przechowywać dane, a obszar rezerwacji zostanie usunięty z kolekcji.
Zwykle ta metoda kończy się przed zapisem rekordu. Aby upewnić się, że rekord został zapisany, określ ForceFlush flagę przy użyciu parametru recordAppendOptions
lub wywołaj metodę Flush .
Dotyczy
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions)
Zapisuje rekord dziennika w obiekcie LogRecordSequence. Nie można dziedziczyć tej metody.
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
Parametry
- data
- ArraySegment<Byte>
Lista segmentów tablic bajtowych, które będą łączone i dołączane jako rekord.
- nextUndoRecord
- SequenceNumber
Numer sekwencji następnego rekordu w podanej przez użytkownika kolejności.
- previousRecord
- SequenceNumber
Numer sekwencji następnego rekordu w poprzedniej kolejności.
- recordAppendOptions
- RecordAppendOptions
Prawidłowa wartość określająca RecordAppendOptions sposób zapisywania danych.
Zwraca
Numer sekwencji dołączonego rekordu dziennika.
Implementuje
Wyjątki
userRecord
lub previousRecord
jest nieprawidłowy dla tej sekwencji.
-lub-
data
nie można dołączyć, ponieważ jest on większy niż maksymalny rozmiar rekordu.
-lub-
reservations
ta sekwencja rekordów nie została utworzona.
Co najmniej jeden argument to null
.
userRecord
lub previousRecord
nie znajduje się między numerami podstawowymi i ostatnimi sekwencjami tej sekwencji.
Nie można wykonać żądania z powodu nieoczekiwanego wyjątku we/wy.
-lub-
Nie można wykonać żądania z powodu błędu urządzenia we/wy.
Nie można wykonać operacji, ponieważ sekwencja rekordów została otwarta z dostępem tylko do odczytu.
Metoda została wywołana po usunięciu sekwencji.
Za mało pamięci, aby kontynuować wykonywanie programu.
Sekwencja rekordów jest pełna.
Dostęp do określonej sekwencji dzienników jest odrzucany przez system operacyjny.
Przykłady
W poniższym przykładzie pokazano, jak używać tej metody do dołączania rekordu dziennika do sekwencji.
// 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)
Uwagi
Dane zawarte w parametrze data
będą łączone w jedną tablicę bajtów do dołączania jako rekordu. Jednak podczas odczytywania rekordu nie jest wprowadzana żadna aprowizacja dzielenia danych z powrotem na segmenty tablic.
Zwykle ta metoda kończy się przed zapisem rekordu. Aby upewnić się, że rekord został zapisany, określ ForceFlush flagę przy użyciu parametru recordAppendOptions
lub wywołaj metodę Flush .
Dotyczy
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions)
Dołącza rekord dziennika do elementu IRecordSequence. Nie można dziedziczyć tej metody.
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
Parametry
- data
- IList<ArraySegment<Byte>>
Lista segmentów tablic bajtowych, które będą łączone i dołączane jako rekord.
- userRecord
- SequenceNumber
Numer sekwencji następnego rekordu w podanej przez użytkownika kolejności.
- previousRecord
- SequenceNumber
Numer sekwencji następnego rekordu w poprzedniej kolejności.
- recordAppendOptions
- RecordAppendOptions
Prawidłowa wartość określająca RecordAppendOptions sposób zapisywania danych.
Zwraca
Numer sekwencji dołączonego rekordu dziennika.
Implementuje
Wyjątki
userRecord
lub previousRecord
jest nieprawidłowy dla tej sekwencji.
-lub-
data
nie można dołączyć, ponieważ jest on większy niż maksymalny rozmiar rekordu.
-lub-
reservations
ta sekwencja rekordów nie została utworzona.
Co najmniej jeden argument to null
.
userRecord
lub previousRecord
nie znajduje się między numerami podstawowymi i ostatnimi sekwencjami tej sekwencji.
Nie można wykonać żądania z powodu nieoczekiwanego wyjątku we/wy.
-lub-
Nie można wykonać żądania z powodu błędu urządzenia we/wy.
Nie można wykonać operacji, ponieważ sekwencja rekordów została otwarta z dostępem tylko do odczytu.
Metoda została wywołana po usunięciu sekwencji.
Za mało pamięci, aby kontynuować wykonywanie programu.
Sekwencja rekordów jest pełna.
Dostęp do określonej sekwencji dzienników jest odrzucany przez system operacyjny.
Uwagi
Dane zawarte w parametrze data
będą łączone w jedną tablicę bajtów do dołączania jako rekordu. Jednak podczas odczytywania rekordu nie jest wprowadzana żadna aprowizacja dzielenia danych z powrotem na segmenty tablic.
Zwykle ta metoda kończy się przed zapisem rekordu. Aby upewnić się, że rekord został zapisany, określ ForceFlush flagę przy użyciu parametru recordAppendOptions
lub wywołaj metodę Flush .