LogRecordSequence.Append メソッド

定義

ログ レコードを 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 が、このレコード シーケンスによって作成されていません。

1 つ以上の引数が null です。

userRecord または previousRecord が、このシーケンスの基本シーケンス番号と最後のシーケンス番号との間にありません。

予期しない I/O 例外のため、要求は実行されませんでした。

- または -

I/O デバイス エラーのため、要求は実行されませんでした。

レコード シーケンスが読み取り専用アクセスで開かれているため、操作を実行できません。

シーケンスが破棄された後にメソッドが呼び出されました。

プログラムの実行を継続する十分なメモリがありません。

レコード シーケンスがいっぱいです。

指定のログ シーケンスへのアクセスは、オペレーティング システムにより拒否されました。

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

戻り値

追加されたログ レコードのシーケンス番号。

実装

例外

このシーケンスの userRecord または previousRecord が有効ではありません。

- または -

data が最大レコード サイズより大きいため、追加できません。

- または -

reservations が、このレコード シーケンスによって作成されていません。

1 つ以上の引数が null です。

userRecord または previousRecord が、このシーケンスの基本シーケンス番号と最後のシーケンス番号との間にありません。

予期しない I/O 例外のため、要求は実行されませんでした。

- または -

I/O デバイス エラーのため、要求は実行されませんでした。

レコード シーケンスが読み取り専用アクセスで開かれているため、操作を実行できません。

シーケンスが破棄された後にメソッドが呼び出されました。

プログラムの実行を継続する十分なメモリがありません。

レコード シーケンスがいっぱいです。

指定のログ シーケンスへのアクセスは、オペレーティング システムにより拒否されました。

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 が、このレコード シーケンスによって作成されていません。

1 つ以上の引数が null です。

userRecord または previousRecord が、このシーケンスの基本シーケンス番号と最後のシーケンス番号との間にありません。

予期しない 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 の有効な値。

戻り値

追加されたログ レコードのシーケンス番号。

実装

例外

このシーケンスの userRecord または previousRecord が有効ではありません。

- または -

data が最大レコード サイズより大きいため、追加できません。

- または -

reservations が、このレコード シーケンスによって作成されていません。

1 つ以上の引数が null です。

userRecord または previousRecord が、このシーケンスの基本シーケンス番号と最後のシーケンス番号との間にありません。

予期しない I/O 例外のため、要求は実行されませんでした。

- または -

I/O デバイス エラーのため、要求は実行されませんでした。

レコード シーケンスが読み取り専用アクセスで開かれているため、操作を実行できません。

シーケンスが破棄された後にメソッドが呼び出されました。

プログラムの実行を継続する十分なメモリがありません。

レコード シーケンスがいっぱいです。

指定のログ シーケンスへのアクセスは、オペレーティング システムにより拒否されました。

注釈

data パラメーターに格納されたデータは、レコードとして追加するために単一バイトの配列に連結されます。 ただし、レコードの読み取り時にデータを分割して配列セグメントに戻す準備は実施されません。

このメソッドは通常、レコードの書き込みが終わる前に完了します。 レコードが書き込まれたことを確認するために、ForceFlush パラメーターを使用して recordAppendOptions フラグを指定するか、Flush メソッドを呼び出します。

適用対象