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 pliku IRecordSequence.
Przeciążenia
| Nazwa | Opis |
|---|---|
| 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 pliku 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ć elementu Append 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 określonej przez użytkownika kolejności.
- previousRecord
- SequenceNumber
Numer sekwencji następnego rekordu w poprzedniej kolejności.
- recordAppendOptions
- RecordAppendOptions
Prawidłowa wartość określa sposób zapisywania RecordAppendOptions 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 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 blokowany przez system operacyjny.
Nie można znaleźć rezerwacji wystarczająco dużej, aby zmieścić data się w pliku reservations.
Uwagi
Dane zawarte w parametrze data będą łączone w jedną tablicę bajtów do dołączania jako rekordu. Jednak podczas odczytu rekordu nie jest wprowadzana żadna aprowizacja dzielenia danych z powrotem na segmenty tablicy.
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 ten obszar rezerwacji zostanie usunięty z kolekcji.
Zwykle ta metoda kończy się przed zapisaniem rekordu. Aby upewnić się, że rekord został zapisany, określ flagę ForceFlush 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 określonej przez użytkownika kolejności.
- previousRecord
- SequenceNumber
Numer sekwencji następnego rekordu w poprzedniej kolejności.
- recordAppendOptions
- RecordAppendOptions
Prawidłowa wartość określa sposób zapisywania RecordAppendOptions 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 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 blokowany przez system operacyjny.
Nie można znaleźć rezerwacji wystarczająco dużej, aby zmieścić data się w pliku reservations.
Uwagi
Dane zawarte w parametrze data będą łączone w jedną tablicę bajtów do dołączania jako rekordu. Jednak podczas odczytu rekordu nie jest wprowadzana żadna aprowizacja dzielenia danych z powrotem na segmenty tablicy.
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 ten obszar rezerwacji zostanie usunięty z kolekcji.
Zwykle ta metoda kończy się przed zapisaniem rekordu. Aby upewnić się, że rekord został zapisany, określ flagę ForceFlush przy użyciu parametru recordAppendOptions lub wywołaj metodę Flush .
Dotyczy
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions)
Zapisuje rekord dziennika w pliku 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 określonej przez użytkownika kolejności.
- previousRecord
- SequenceNumber
Numer sekwencji następnego rekordu w poprzedniej kolejności.
- recordAppendOptions
- RecordAppendOptions
Prawidłowa wartość określa sposób zapisywania RecordAppendOptions 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 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 blokowany 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 odczytu rekordu nie jest wprowadzana żadna aprowizacja dzielenia danych z powrotem na segmenty tablicy.
Zwykle ta metoda kończy się przed zapisaniem rekordu. Aby upewnić się, że rekord został zapisany, określ flagę ForceFlush 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 określonej przez użytkownika kolejności.
- previousRecord
- SequenceNumber
Numer sekwencji następnego rekordu w poprzedniej kolejności.
- recordAppendOptions
- RecordAppendOptions
Prawidłowa wartość określa sposób zapisywania RecordAppendOptions 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 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 blokowany przez system operacyjny.
Uwagi
Dane zawarte w parametrze data będą łączone w jedną tablicę bajtów do dołączania jako rekordu. Jednak podczas odczytu rekordu nie jest wprowadzana żadna aprowizacja dzielenia danych z powrotem na segmenty tablicy.
Zwykle ta metoda kończy się przed zapisaniem rekordu. Aby upewnić się, że rekord został zapisany, określ flagę ForceFlush przy użyciu parametru recordAppendOptions lub wywołaj metodę Flush .