다음을 통해 공유


FileRecordSequence.ReserveAndAppend 메서드

정의

자동으로 단일 예약을 만들고 시퀀스에 레코드를 추가합니다.

오버로드

ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])

자동으로 단일 예약을 만들고 시퀀스에 레코드를 추가합니다. 이 메서드는 상속될 수 없습니다.

ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])

자동으로 단일 예약을 만들고 시퀀스에 레코드를 추가합니다. 이 메서드는 상속될 수 없습니다.

ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])

자동으로 단일 예약을 만들고 시퀀스에 레코드를 추가합니다. 이 메서드는 상속될 수 없습니다.

public:
 virtual System::IO::Log::SequenceNumber ReserveAndAppend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ data, System::IO::Log::SequenceNumber nextUndoRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions, System::IO::Log::ReservationCollection ^ reservationCollection, ... cli::array <long> ^ reservations);
public System.IO.Log.SequenceNumber ReserveAndAppend (System.Collections.Generic.IList<ArraySegment<byte>> data, System.IO.Log.SequenceNumber nextUndoRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions, System.IO.Log.ReservationCollection reservationCollection, params long[] reservations);
abstract member ReserveAndAppend : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
override this.ReserveAndAppend : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
Public Function ReserveAndAppend (data As IList(Of ArraySegment(Of Byte)), nextUndoRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservationCollection As ReservationCollection, ParamArray reservations As Long()) As SequenceNumber

매개 변수

data
IList<ArraySegment<Byte>>

연결하여 레코드로 추가할 바이트 배열 세그먼트의 목록입니다.

nextUndoRecord
SequenceNumber

사용자가 지정한 순서에서 다음 레코드의 시퀀스 번호입니다.

previousRecord
SequenceNumber

이전 순서에서 다음 레코드의 시퀀스 번호입니다.

recordAppendOptions
RecordAppendOptions

데이터를 쓰는 방법을 지정하는 RecordAppendOptions의 유효한 값입니다.

reservationCollection
ReservationCollection

예약을 만들 예약 컬렉션입니다.

reservations
Int64[]

만들 예약(바이트)입니다.

반환

추가된 로그 레코드의 시퀀스 번호입니다.

구현

예외

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

하나 이상의 인수가 범위를 벗어난 경우

이 레코드 시퀀스를 통해 reservations를 만들 수 없는 경우

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

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

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

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

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

설명

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

지정된 예약은 레코드 추가 작업을 사용하여 원자성 작업에서 제공된 예약 컬렉션에 추가됩니다. 추가가 실패하면 공백이 예약되지 않습니다.

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

적용 대상

ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])

자동으로 단일 예약을 만들고 시퀀스에 레코드를 추가합니다. 이 메서드는 상속될 수 없습니다.

public:
 virtual System::IO::Log::SequenceNumber ReserveAndAppend(ArraySegment<System::Byte> data, System::IO::Log::SequenceNumber nextUndoRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions, System::IO::Log::ReservationCollection ^ reservationCollection, ... cli::array <long> ^ reservations);
public System.IO.Log.SequenceNumber ReserveAndAppend (ArraySegment<byte> data, System.IO.Log.SequenceNumber nextUndoRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions, System.IO.Log.ReservationCollection reservationCollection, params long[] reservations);
abstract member ReserveAndAppend : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
override this.ReserveAndAppend : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
Public Function ReserveAndAppend (data As ArraySegment(Of Byte), nextUndoRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservationCollection As ReservationCollection, ParamArray reservations As Long()) As SequenceNumber

매개 변수

data
ArraySegment<Byte>

연결하여 레코드로 추가할 바이트 배열 세그먼트의 목록입니다.

nextUndoRecord
SequenceNumber

사용자가 지정한 순서에서 다음 레코드의 시퀀스 번호입니다.

previousRecord
SequenceNumber

이전 순서에서 다음 레코드의 시퀀스 번호입니다.

recordAppendOptions
RecordAppendOptions

데이터를 쓰는 방법을 지정하는 RecordAppendOptions의 유효한 값입니다.

reservationCollection
ReservationCollection

예약을 만들 컬렉션이 포함된 ReservationCollection입니다.

reservations
Int64[]

만들 예약(바이트)입니다.

반환

추가된 로그 레코드의 시퀀스 번호입니다.

구현

예외

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

하나 이상의 인수가 범위를 벗어난 경우

이 레코드 시퀀스를 통해 reservations를 만들 수 없는 경우

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

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

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

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

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

설명

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

지정된 예약은 레코드 추가 작업을 사용하여 원자성 작업에서 제공된 예약 컬렉션에 추가됩니다. 추가가 실패하면 공백이 예약되지 않습니다.

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

적용 대상