語言

LogRecordSequence.Append 方法

定義

將日誌記錄寫入 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,其中包含本紀錄應使用的保留條件。

傳回

附加日誌記錄的序號。

實作

例外狀況

userRecordpreviousRecord 是對此序列不適用。

-或-

data 無法附加,因為它超過最大記錄大小。

-或-

reservations 並非由此紀錄序列所創造。

其中一個或多個參數為 null

userRecordpreviousRecord 不位於該序列的基數與末一序列號之間。

由於意外的 I/O 異常,請求無法執行。

-或-

由於 I/O 裝置錯誤,請求無法執行。

由於記錄序列是以唯讀開啟,無法執行此操作。

該方法是在序列被處理後才被呼叫的。

記憶體不足以繼續執行程式。

紀錄序列已滿。

作業系統會拒絕存取指定的日誌序列。

找不到足夠大的保留地可容納 datareservations

備註

參數中 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,其中包含本紀錄應使用的保留條件。

傳回

附加日誌記錄的序號。

實作

例外狀況

userRecordpreviousRecord 是對此序列不適用。

-或-

data 無法附加,因為它超過最大記錄大小。

-或-

reservations 並非由此紀錄序列所創造。

其中一個或多個參數為 null

userRecordpreviousRecord 不位於該序列的基數與末一序列號之間。

由於意外的 I/O 異常,請求無法執行。

-或-

由於 I/O 裝置錯誤,請求無法執行。

由於記錄序列是以唯讀開啟,無法執行此操作。

該方法是在序列被處理後才被呼叫的。

記憶體不足以繼續執行程式。

紀錄序列已滿。

作業系統會拒絕存取指定的日誌序列。

找不到足夠大的保留地可容納 datareservations

備註

參數中 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 會指定資料應該如何寫入。

傳回

附加日誌記錄的序號。

實作

例外狀況

userRecordpreviousRecord 是對此序列不適用。

-或-

data 無法附加,因為它超過最大記錄大小。

-或-

reservations 並非由此紀錄序列所創造。

其中一個或多個參數為 null

userRecordpreviousRecord 不位於該序列的基數與末一序列號之間。

由於意外的 I/O 異常,請求無法執行。

-或-

由於 I/O 裝置錯誤,請求無法執行。

由於記錄序列是以唯讀開啟,無法執行此操作。

該方法是在序列被處理後才被呼叫的。

記憶體不足以繼續執行程式。

紀錄序列已滿。

作業系統會拒絕存取指定的日誌序列。

範例

以下範例示範如何使用此方法將對數記錄附加到序列中。

// 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 會指定資料應該如何寫入。

傳回

附加日誌記錄的序號。

實作

例外狀況

userRecordpreviousRecord 是對此序列不適用。

-或-

data 無法附加,因為它超過最大記錄大小。

-或-

reservations 並非由此紀錄序列所創造。

其中一個或多個參數為 null

userRecordpreviousRecord 不位於該序列的基數與末一序列號之間。

由於意外的 I/O 異常,請求無法執行。

-或-

由於 I/O 裝置錯誤,請求無法執行。

由於記錄序列是以唯讀開啟,無法執行此操作。

該方法是在序列被處理後才被呼叫的。

記憶體不足以繼續執行程式。

紀錄序列已滿。

作業系統會拒絕存取指定的日誌序列。

備註

參數中 data 包含的資料會被串接成一個位元組陣列,作為記錄附加。 然而,讀取記錄時並未提供將資料分割回陣列區段的機制。

通常,此方法會在紀錄寫入前完成。 為了確保記錄已被寫入,請使用參數ForceFlush指定旗標,recordAppendOptions或呼叫該Flush方法。

適用於