다음을 통해 공유


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를 만들 수 없는 경우

하나 이상의 인수가 null인 경우

userRecord 또는 previousRecord가 이 시퀀스의 기준 시퀀스 번호와 마지막 시퀀스 번호 사이에 있지 않은 경우

예기치 못한 I/O 예외 때문에 요청을 수행할 수 없는 경우

또는

I/O 디바이스 오류 때문에 요청을 수행할 수 없는 경우

읽기 전용 액세스 권한으로 레코드 시퀀스를 열었으므로 작업을 수행할 수 없습니다.

시퀀스가 삭제된 후 메서드가 호출된 경우

메모리가 부족하여 프로그램을 계속 실행할 수 없는 경우

레코드 시퀀스가 꽉 찼습니다.

지정된 로그 시퀀스에 대한 액세스가 운영 체제에서 거부되는 경우

data에서 reservations에 맞는 크기의 예약을 찾을 수 없는 경우

설명

매개 변수에 data 포함된 데이터는 레코드로 추가하기 위해 단일 바이트 배열에 연결됩니다. 그러나 레코드를 읽을 때 데이터를 배열 세그먼트로 다시 분할하기 위한 프로비저닝은 이루어지지 않습니다.

추가된 레코드는 매개 변수로 지정된 예약을 사용하여 이전에 예약된 reservations 공간을 사용합니다. 추가가 성공하면 데이터를 저장할 수 있는 가장 작은 예약 영역을 사용하고 해당 예약 영역은 컬렉션에서 제거됩니다.

일반적으로 이 메서드는 레코드가 작성되기 전에 완료됩니다. 레코드가 작성되었는지 확인하려면 매개 변수를 사용하여 플래그를 ForceFlushrecordAppendOptions 지정하거나 메서드를 호출합니다 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가 이 시퀀스의 기준 시퀀스 번호와 마지막 시퀀스 번호 사이에 있지 않은 경우

예기치 못한 I/O 예외 때문에 요청을 수행할 수 없는 경우

또는

I/O 디바이스 오류 때문에 요청을 수행할 수 없는 경우

읽기 전용 액세스 권한으로 레코드 시퀀스를 열었으므로 작업을 수행할 수 없습니다.

시퀀스가 삭제된 후 메서드가 호출된 경우

메모리가 부족하여 프로그램을 계속 실행할 수 없는 경우

레코드 시퀀스가 꽉 찼습니다.

지정된 로그 시퀀스에 대한 액세스가 운영 체제에서 거부되는 경우

data에서 reservations에 맞는 크기의 예약을 찾을 수 없는 경우

설명

매개 변수에 data 포함된 데이터는 레코드로 추가하기 위해 단일 바이트 배열에 연결됩니다. 그러나 레코드를 읽을 때 데이터를 배열 세그먼트로 다시 분할하기 위한 프로비저닝은 이루어지지 않습니다.

추가된 레코드는 매개 변수로 지정된 예약을 사용하여 이전에 예약된 reservations 공간을 사용합니다. 추가가 성공하면 데이터를 저장할 수 있는 가장 작은 예약 영역을 사용하고 해당 예약 영역은 컬렉션에서 제거됩니다.

일반적으로 이 메서드는 레코드가 작성되기 전에 완료됩니다. 레코드가 작성되었는지 확인하려면 매개 변수를 사용하여 플래그를 ForceFlushrecordAppendOptions 지정하거나 메서드를 호출합니다 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가 이 시퀀스의 기준 시퀀스 번호와 마지막 시퀀스 번호 사이에 있지 않은 경우

예기치 못한 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 포함된 데이터는 레코드로 추가하기 위해 단일 바이트 배열에 연결됩니다. 그러나 레코드를 읽을 때 데이터를 배열 세그먼트로 다시 분할하기 위한 프로비저닝은 이루어지지 않습니다.

일반적으로 이 메서드는 레코드가 작성되기 전에 완료됩니다. 레코드가 작성되었는지 확인하려면 매개 변수를 사용하여 플래그를 ForceFlushrecordAppendOptions 지정하거나 메서드를 호출합니다 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가 이 시퀀스의 기준 시퀀스 번호와 마지막 시퀀스 번호 사이에 있지 않은 경우

예기치 못한 I/O 예외 때문에 요청을 수행할 수 없는 경우

또는

I/O 디바이스 오류 때문에 요청을 수행할 수 없는 경우

읽기 전용 액세스 권한으로 레코드 시퀀스를 열었으므로 작업을 수행할 수 없습니다.

시퀀스가 삭제된 후 메서드가 호출된 경우

메모리가 부족하여 프로그램을 계속 실행할 수 없는 경우

레코드 시퀀스가 꽉 찼습니다.

지정된 로그 시퀀스에 대한 액세스가 운영 체제에서 거부되는 경우

설명

매개 변수에 data 포함된 데이터는 레코드로 추가하기 위해 단일 바이트 배열에 연결됩니다. 그러나 레코드를 읽을 때 데이터를 배열 세그먼트로 다시 분할하기 위한 프로비저닝은 이루어지지 않습니다.

일반적으로 이 메서드는 레코드가 작성되기 전에 완료됩니다. 레코드가 작성되었는지 확인하려면 매개 변수를 사용하여 플래그를 ForceFlushrecordAppendOptions 지정하거나 메서드를 호출합니다 Flush .

적용 대상