LogRecordSequence.Append Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Schreibt einen Protokolldatensatz in die IRecordSequence.
Überlädt
| Name | Beschreibung |
|---|---|
| Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection) |
Fügt einen Protokolldatensatz an , IRecordSequencewobei leer, der zuvor in der Sequenz reserviert war. Diese Methode kann nicht geerbt werden. |
| Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection) |
Fügt einen Protokolldatensatz an , IRecordSequencewobei leer, der zuvor in der Sequenz reserviert war. Diese Methode kann nicht geerbt werden. |
| Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions) |
Schreibt einen Protokolldatensatz in die LogRecordSequence. Diese Methode kann nicht geerbt werden. |
| Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions) |
Fügt einen Protokolldatensatz an die IRecordSequence. Diese Methode kann nicht geerbt werden. |
Beispiele
In diesem Beispiel wird gezeigt, wie das Append Element verwendet wird.
// 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)
Fügt einen Protokolldatensatz an , IRecordSequencewobei leer, der zuvor in der Sequenz reserviert war. Diese Methode kann nicht geerbt werden.
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
Parameter
- data
- ArraySegment<Byte>
Eine Liste der Bytearraysegmente, die als Datensatz verkettet und angefügt werden.
- nextUndoRecord
- SequenceNumber
Die Sequenznummer des nächsten Datensatzes in der vom Benutzer angegebenen Reihenfolge.
- previousRecord
- SequenceNumber
Die Sequenznummer des nächsten Datensatzes in der Vorherigen Reihenfolge.
- recordAppendOptions
- RecordAppendOptions
Ein gültiger Wert, der RecordAppendOptions angibt, wie die Daten geschrieben werden sollen.
- reservations
- ReservationCollection
A ReservationCollection that contains the reservation that should be used for this record.
Gibt zurück
Die Sequenznummer des angefügten Protokolldatensatzes.
Implementiert
Ausnahmen
userRecord oder previousRecord ist für diese Sequenz nicht gültig.
-oder-
data kann nicht angefügt werden, da sie größer als die maximale Datensatzgröße ist.
-oder-
reservations wurde nicht von dieser Datensatzsequenz erstellt.
Mindestens eines der Argumente ist null.
userRecord oder previousRecord liegt nicht zwischen der Basis- und der letzten Sequenznummer dieser Sequenz.
Die Anforderung konnte aufgrund einer unerwarteten E/A-Ausnahme nicht ausgeführt werden.
-oder-
Die Anforderung konnte aufgrund eines E/A-Gerätefehlers nicht ausgeführt werden.
Der Vorgang kann nicht ausgeführt werden, da die Datensatzsequenz mit schreibgeschütztem Zugriff geöffnet wurde.
Die Methode wurde aufgerufen, nachdem die Sequenz verworfen wurde.
Es ist nicht genügend Arbeitsspeicher vorhanden, um die Ausführung des Programms fortzusetzen.
Die Datensatzsequenz ist voll.
Der Zugriff auf die angegebene Protokollsequenz wird vom Betriebssystem verweigert.
Keine Reservierung groß genug, um zu passen data , finden Sie in reservations.
Hinweise
Daten, die data im Parameter enthalten sind, werden als Datensatz in ein einzelnes Bytearray verkettet. Beim Lesen des Datensatzes werden jedoch keine Daten wieder in Arraysegmente aufgeteilt.
Der angefügte Datensatz verbraucht Speicherplatz, der zuvor reserviert wurde, mithilfe einer reservierung, die durch den reservations Parameter angegeben wurde. Wenn das Anfügen erfolgreich ist, wird der kleinste Reservierungsbereich verwendet, der die Daten enthalten kann, und dieser Reservierungsbereich wird aus der Sammlung entfernt.
Normalerweise wird diese Methode abgeschlossen, bevor der Datensatz geschrieben wurde. Um sicherzustellen, dass ein Datensatz geschrieben wurde, geben Sie entweder das ForceFlush Flag mit dem recordAppendOptions Parameter an, oder rufen Sie die Flush Methode auf.
Gilt für:
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection)
Fügt einen Protokolldatensatz an , IRecordSequencewobei leer, der zuvor in der Sequenz reserviert war. Diese Methode kann nicht geerbt werden.
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
Parameter
- data
- IList<ArraySegment<Byte>>
Eine Liste der Bytearraysegmente, die als Datensatz verkettet und angefügt werden.
- userRecord
- SequenceNumber
Die Sequenznummer des nächsten Datensatzes in der vom Benutzer angegebenen Reihenfolge.
- previousRecord
- SequenceNumber
Die Sequenznummer des nächsten Datensatzes in der Vorherigen Reihenfolge.
- recordAppendOptions
- RecordAppendOptions
Ein gültiger Wert, der RecordAppendOptions angibt, wie die Daten geschrieben werden sollen.
- reservations
- ReservationCollection
A ReservationCollection that contains the reservation that should be used for this record.
Gibt zurück
Die Sequenznummer des angefügten Protokolldatensatzes.
Implementiert
Ausnahmen
userRecord oder previousRecord ist für diese Sequenz nicht gültig.
-oder-
data kann nicht angefügt werden, da sie größer als die maximale Datensatzgröße ist.
-oder-
reservations wurde nicht von dieser Datensatzsequenz erstellt.
Mindestens eines der Argumente ist null.
userRecord oder previousRecord liegt nicht zwischen der Basis- und der letzten Sequenznummer dieser Sequenz.
Die Anforderung konnte aufgrund einer unerwarteten E/A-Ausnahme nicht ausgeführt werden.
-oder-
Die Anforderung konnte aufgrund eines E/A-Gerätefehlers nicht ausgeführt werden.
Der Vorgang kann nicht ausgeführt werden, da die Datensatzsequenz mit schreibgeschütztem Zugriff geöffnet wurde.
Die Methode wurde aufgerufen, nachdem die Sequenz verworfen wurde.
Es ist nicht genügend Arbeitsspeicher vorhanden, um die Ausführung des Programms fortzusetzen.
Die Datensatzsequenz ist voll.
Der Zugriff auf die angegebene Protokollsequenz wird vom Betriebssystem verweigert.
Keine Reservierung groß genug, um zu passen data , finden Sie in reservations.
Hinweise
Daten, die data im Parameter enthalten sind, werden als Datensatz in ein einzelnes Bytearray verkettet. Beim Lesen des Datensatzes werden jedoch keine Daten wieder in Arraysegmente aufgeteilt.
Der angefügte Datensatz verbraucht Speicherplatz, der zuvor reserviert wurde, mithilfe einer reservierung, die durch den reservations Parameter angegeben wurde. Wenn das Anfügen erfolgreich ist, wird der kleinste Reservierungsbereich verwendet, der die Daten enthalten kann, und dieser Reservierungsbereich wird aus der Sammlung entfernt.
Normalerweise wird diese Methode abgeschlossen, bevor der Datensatz geschrieben wurde. Um sicherzustellen, dass ein Datensatz geschrieben wurde, geben Sie entweder das ForceFlush Flag mit dem recordAppendOptions Parameter an, oder rufen Sie die Flush Methode auf.
Gilt für:
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions)
Schreibt einen Protokolldatensatz in die LogRecordSequence. Diese Methode kann nicht geerbt werden.
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
Parameter
- data
- ArraySegment<Byte>
Eine Liste der Bytearraysegmente, die als Datensatz verkettet und angefügt werden.
- nextUndoRecord
- SequenceNumber
Die Sequenznummer des nächsten Datensatzes in der vom Benutzer angegebenen Reihenfolge.
- previousRecord
- SequenceNumber
Die Sequenznummer des nächsten Datensatzes in der Vorherigen Reihenfolge.
- recordAppendOptions
- RecordAppendOptions
Ein gültiger Wert, der RecordAppendOptions angibt, wie die Daten geschrieben werden sollen.
Gibt zurück
Die Sequenznummer des angefügten Protokolldatensatzes.
Implementiert
Ausnahmen
userRecord oder previousRecord ist für diese Sequenz nicht gültig.
-oder-
data kann nicht angefügt werden, da sie größer als die maximale Datensatzgröße ist.
-oder-
reservations wurde nicht von dieser Datensatzsequenz erstellt.
Mindestens eines der Argumente ist null.
userRecord oder previousRecord liegt nicht zwischen der Basis- und der letzten Sequenznummer dieser Sequenz.
Die Anforderung konnte aufgrund einer unerwarteten E/A-Ausnahme nicht ausgeführt werden.
-oder-
Die Anforderung konnte aufgrund eines E/A-Gerätefehlers nicht ausgeführt werden.
Der Vorgang kann nicht ausgeführt werden, da die Datensatzsequenz mit schreibgeschütztem Zugriff geöffnet wurde.
Die Methode wurde aufgerufen, nachdem die Sequenz verworfen wurde.
Es ist nicht genügend Arbeitsspeicher vorhanden, um die Ausführung des Programms fortzusetzen.
Die Datensatzsequenz ist voll.
Der Zugriff auf die angegebene Protokollsequenz wird vom Betriebssystem verweigert.
Beispiele
Im folgenden Beispiel wird veranschaulicht, wie Sie diese Methode verwenden, um einen Protokolldatensatz an die Sequenz anzufügen.
// 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)
Hinweise
Daten, die data im Parameter enthalten sind, werden als Datensatz in ein einzelnes Bytearray verkettet. Beim Lesen des Datensatzes werden jedoch keine Daten wieder in Arraysegmente aufgeteilt.
Normalerweise wird diese Methode abgeschlossen, bevor der Datensatz geschrieben wurde. Um sicherzustellen, dass ein Datensatz geschrieben wurde, geben Sie entweder das ForceFlush Flag mit dem recordAppendOptions Parameter an, oder rufen Sie die Flush Methode auf.
Gilt für:
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions)
Fügt einen Protokolldatensatz an die IRecordSequence. Diese Methode kann nicht geerbt werden.
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
Parameter
- data
- IList<ArraySegment<Byte>>
Eine Liste der Bytearraysegmente, die als Datensatz verkettet und angefügt werden.
- userRecord
- SequenceNumber
Die Sequenznummer des nächsten Datensatzes in der vom Benutzer angegebenen Reihenfolge.
- previousRecord
- SequenceNumber
Die Sequenznummer des nächsten Datensatzes in der Vorherigen Reihenfolge.
- recordAppendOptions
- RecordAppendOptions
Ein gültiger Wert, der RecordAppendOptions angibt, wie die Daten geschrieben werden sollen.
Gibt zurück
Die Sequenznummer des angefügten Protokolldatensatzes.
Implementiert
Ausnahmen
userRecord oder previousRecord ist für diese Sequenz nicht gültig.
-oder-
data kann nicht angefügt werden, da sie größer als die maximale Datensatzgröße ist.
-oder-
reservations wurde nicht von dieser Datensatzsequenz erstellt.
Mindestens eines der Argumente ist null.
userRecord oder previousRecord liegt nicht zwischen der Basis- und der letzten Sequenznummer dieser Sequenz.
Die Anforderung konnte aufgrund einer unerwarteten E/A-Ausnahme nicht ausgeführt werden.
-oder-
Die Anforderung konnte aufgrund eines E/A-Gerätefehlers nicht ausgeführt werden.
Der Vorgang kann nicht ausgeführt werden, da die Datensatzsequenz mit schreibgeschütztem Zugriff geöffnet wurde.
Die Methode wurde aufgerufen, nachdem die Sequenz verworfen wurde.
Es ist nicht genügend Arbeitsspeicher vorhanden, um die Ausführung des Programms fortzusetzen.
Die Datensatzsequenz ist voll.
Der Zugriff auf die angegebene Protokollsequenz wird vom Betriebssystem verweigert.
Hinweise
Daten, die data im Parameter enthalten sind, werden als Datensatz in ein einzelnes Bytearray verkettet. Beim Lesen des Datensatzes werden jedoch keine Daten wieder in Arraysegmente aufgeteilt.
Normalerweise wird diese Methode abgeschlossen, bevor der Datensatz geschrieben wurde. Um sicherzustellen, dass ein Datensatz geschrieben wurde, geben Sie entweder das ForceFlush Flag mit dem recordAppendOptions Parameter an, oder rufen Sie die Flush Methode auf.