LogRecordSequence.Append 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将日志记录写入 .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 预留来占用以前保留的空间。 如果追加成功,它将使用可以保存数据的最小预留区域,并将从集合中删除该预留区域。
通常,此方法在写入记录之前完成。 若要确保已写入记录,请使用参数指定 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 预留来占用以前保留的空间。 如果追加成功,它将使用可以保存数据的最小预留区域,并将从集合中删除该预留区域。
通常,此方法在写入记录之前完成。 若要确保已写入记录,请使用参数指定 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 该方法。