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
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection) |
Fügt der IRecordSequence mithilfe von zuvor in der Sequenz reserviertem Speicherplatz einen Protokolldatensatz an. Diese Methode kann nicht vererbt werden. |
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection) |
Fügt der IRecordSequence mithilfe von zuvor in der Sequenz reserviertem Speicherplatz einen Protokolldatensatz an. Diese Methode kann nicht vererbt werden. |
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions) |
Schreibt einen Protokolldatensatz in die LogRecordSequence. Diese Methode kann nicht vererbt werden. |
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions) |
Fügt einen Protokolldatensatz an die IRecordSequence an. Diese Methode kann nicht vererbt werden. |
Beispiele
Dieses Beispiel veranschaulicht die Verwendung des Append-Members.
// 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 der IRecordSequence mithilfe von zuvor in der Sequenz reserviertem Speicherplatz einen Protokolldatensatz an. Diese Methode kann nicht vererbt 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 von Bytearraysegmenten, die verkettet und als Datensatz 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 vorheriger Reihenfolge.
- recordAppendOptions
- RecordAppendOptions
Ein gültiger Wert für RecordAppendOptions, der angibt, wie die Daten geschrieben werden sollten.
- reservations
- ReservationCollection
Eine ReservationCollection, die die Reservierung enthält, die für diesen Datensatz verwendet werden sollte.
Gibt zurück
Die Sequenznummer des angefügten Datensatzes.
Implementiert
Ausnahmen
userRecord
oder previousRecord
ist für diese Sequenz nicht gültig.
- oder -
data
kann nicht angefügt werden, da die maximale Datensatzgröße überschritten wird.
- oder -
reservations
wurde nicht von dieser Datensatzsequenz erstellt.
Mindestens ein Argument ist null
.
userRecord
oder previousRecord
befindet sich nicht zwischen der Basissequenznummer 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.
Der Arbeitsspeicher reicht nicht aus, um die Ausführung des Programms fortzusetzen.
Die Datensatzsequenz ist voll.
Der Zugriff auf die angegebene Protokollsequenz wird vom Betriebssystem verweigert.
Keine Reservierung, die groß genug für data
ist, kann in reservations
gefunden werden.
Hinweise
Die im data
-Parameter enthaltenen Daten werden zum Anfügen als Datensatz in einem Array mit einem Byte verkettet. Die Daten können jedoch nicht wieder in Arraysegmente aufgeteilt werden, nachdem der Datensatz gelesen wurde.
Der angefügte Datensatz, der zuvor mithilfe einer vom reservations
-Parameter angegebenen Reservierung reserviert wurde, nimmt Speicherplatz ein. Wenn der Anfügevorgang erfolgreich ist, wird der kleinstmögliche Reservierungsbereich verwendet, der die Daten aufnehmen kann. Dieser Reservierungsbereich wird dann aus der Auflistung entfernt.
Normalerweise ist diese Methode abgeschlossen, bevor der Datensatz geschrieben wird. Um sicherzustellen, dass ein Datensatz geschrieben wurde, geben Sie entweder das ForceFlush-Flag mithilfe des recordAppendOptions
-Parameters an, oder rufen Sie die Flush-Methode auf.
Gilt für:
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection)
Fügt der IRecordSequence mithilfe von zuvor in der Sequenz reserviertem Speicherplatz einen Protokolldatensatz an. Diese Methode kann nicht vererbt 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 von Bytearraysegmenten, die verkettet und als Datensatz 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 vorheriger Reihenfolge.
- recordAppendOptions
- RecordAppendOptions
Ein gültiger Wert für RecordAppendOptions, der angibt, wie die Daten geschrieben werden sollten.
- reservations
- ReservationCollection
Eine ReservationCollection, die die Reservierung enthält, die für diesen Datensatz verwendet werden sollte.
Gibt zurück
Die Sequenznummer des angefügten Datensatzes.
Implementiert
Ausnahmen
userRecord
oder previousRecord
ist für diese Sequenz nicht gültig.
- oder -
data
kann nicht angefügt werden, da die maximale Datensatzgröße überschritten wird.
- oder -
reservations
wurde nicht von dieser Datensatzsequenz erstellt.
Mindestens ein Argument ist null
.
userRecord
oder previousRecord
befindet sich nicht zwischen der Basissequenznummer 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.
Der Arbeitsspeicher reicht nicht aus, um die Ausführung des Programms fortzusetzen.
Die Datensatzsequenz ist voll.
Der Zugriff auf die angegebene Protokollsequenz wird vom Betriebssystem verweigert.
Keine Reservierung, die groß genug für data
ist, kann in reservations
gefunden werden.
Hinweise
Die im data
-Parameter enthaltenen Daten werden zum Anfügen als Datensatz in einem Array mit einem Byte verkettet. Die Daten können jedoch nicht wieder in Arraysegmente aufgeteilt werden, nachdem der Datensatz gelesen wurde.
Der angefügte Datensatz, der zuvor mithilfe einer vom reservations
-Parameter angegebenen Reservierung reserviert wurde, nimmt Speicherplatz ein. Wenn der Anfügevorgang erfolgreich ist, wird der kleinstmögliche Reservierungsbereich verwendet, der die Daten aufnehmen kann. Dieser Reservierungsbereich wird dann aus der Auflistung entfernt.
Normalerweise ist diese Methode abgeschlossen, bevor der Datensatz geschrieben wird. Um sicherzustellen, dass ein Datensatz geschrieben wurde, geben Sie entweder das ForceFlush-Flag mithilfe des recordAppendOptions
-Parameters 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 vererbt 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 von Bytearraysegmenten, die verkettet und als Datensatz 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 vorheriger Reihenfolge.
- recordAppendOptions
- RecordAppendOptions
Ein gültiger Wert für RecordAppendOptions, der angibt, wie die Daten geschrieben werden sollten.
Gibt zurück
Die Sequenznummer des angefügten Datensatzes.
Implementiert
Ausnahmen
userRecord
oder previousRecord
ist für diese Sequenz nicht gültig.
- oder -
data
kann nicht angefügt werden, da die maximale Datensatzgröße überschritten wird.
- oder -
reservations
wurde nicht von dieser Datensatzsequenz erstellt.
Mindestens ein Argument ist null
.
userRecord
oder previousRecord
befindet sich nicht zwischen der Basissequenznummer 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.
Der Arbeitsspeicher reicht nicht aus, 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 diese Methode verwendet werden kann, um einer Sequenz einen Protokolldatensatz 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
Die im data
-Parameter enthaltenen Daten werden zum Anfügen als Datensatz in einem Array mit einem Byte verkettet. Die Daten können jedoch nicht wieder in Arraysegmente aufgeteilt werden, nachdem der Datensatz gelesen wurde.
Normalerweise ist diese Methode abgeschlossen, bevor der Datensatz geschrieben wird. Um sicherzustellen, dass ein Datensatz geschrieben wurde, geben Sie entweder das ForceFlush-Flag mithilfe des recordAppendOptions
-Parameters 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 an. Diese Methode kann nicht vererbt 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 von Bytearraysegmenten, die verkettet und als Datensatz 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 vorheriger Reihenfolge.
- recordAppendOptions
- RecordAppendOptions
Ein gültiger Wert für RecordAppendOptions, der angibt, wie die Daten geschrieben werden sollten.
Gibt zurück
Die Sequenznummer des angefügten Datensatzes.
Implementiert
Ausnahmen
userRecord
oder previousRecord
ist für diese Sequenz nicht gültig.
- oder -
data
kann nicht angefügt werden, da die maximale Datensatzgröße überschritten wird.
- oder -
reservations
wurde nicht von dieser Datensatzsequenz erstellt.
Mindestens ein Argument ist null
.
userRecord
oder previousRecord
befindet sich nicht zwischen der Basissequenznummer 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.
Der Arbeitsspeicher reicht nicht aus, um die Ausführung des Programms fortzusetzen.
Die Datensatzsequenz ist voll.
Der Zugriff auf die angegebene Protokollsequenz wird vom Betriebssystem verweigert.
Hinweise
Die im data
-Parameter enthaltenen Daten werden zum Anfügen als Datensatz in einem Array mit einem Byte verkettet. Die Daten können jedoch nicht wieder in Arraysegmente aufgeteilt werden, nachdem der Datensatz gelesen wurde.
Normalerweise ist diese Methode abgeschlossen, bevor der Datensatz geschrieben wird. Um sicherzustellen, dass ein Datensatz geschrieben wurde, geben Sie entweder das ForceFlush-Flag mithilfe des recordAppendOptions
-Parameters an, oder rufen Sie die Flush-Methode auf.