LogRecordSequence.Append 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將日誌記錄寫入 IRecordSequence。
多載
| 名稱 | Description |
|---|---|
| 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 A,其中包含本紀錄應使用的保留條件。
傳回
附加日誌記錄的序號。
實作
例外狀況
userRecord 或 previousRecord 是對此序列不適用。
-或-
data 無法附加,因為它超過最大記錄大小。
-或-
reservations 並非由此紀錄序列所創造。
其中一個或多個參數為 null。
userRecord 或 previousRecord 不位於該序列的基數與末一序列號之間。
由於記錄序列是以唯讀開啟,無法執行此操作。
該方法是在序列被處理後才被呼叫的。
記憶體不足以繼續執行程式。
紀錄序列已滿。
作業系統會拒絕存取指定的日誌序列。
找不到足夠大的保留地可容納 data 於 reservations。
備註
參數中 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 A,其中包含本紀錄應使用的保留條件。
傳回
附加日誌記錄的序號。
實作
例外狀況
userRecord 或 previousRecord 是對此序列不適用。
-或-
data 無法附加,因為它超過最大記錄大小。
-或-
reservations 並非由此紀錄序列所創造。
其中一個或多個參數為 null。
userRecord 或 previousRecord 不位於該序列的基數與末一序列號之間。
由於記錄序列是以唯讀開啟,無法執行此操作。
該方法是在序列被處理後才被呼叫的。
記憶體不足以繼續執行程式。
紀錄序列已滿。
作業系統會拒絕存取指定的日誌序列。
找不到足夠大的保留地可容納 data 於 reservations。
備註
參數中 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方法。