LogRecordSequence.ReserveAndAppend Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Otomatik olarak tek bir rezervasyon yapar ve bir kaydı diziye ekler.
Aşırı Yüklemeler
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Otomatik olarak tek bir rezervasyon yapar ve bir kaydı diziye ekler. Bu yöntem devralınamaz. |
ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Otomatik olarak tek bir rezervasyon yapar ve bir kaydı diziye ekler. Bu yöntem devralınamaz. |
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])
Otomatik olarak tek bir rezervasyon yapar ve bir kaydı diziye ekler. Bu yöntem devralınamaz.
public:
virtual System::IO::Log::SequenceNumber ReserveAndAppend(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 ^ reservationCollection, ... cli::array <long> ^ reservations);
public System.IO.Log.SequenceNumber ReserveAndAppend (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 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)), userRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservationCollection As ReservationCollection, ParamArray reservations As Long()) As SequenceNumber
Parametreler
- data
- IList<ArraySegment<Byte>>
Birleştirilecek ve kayıt olarak eklenecek bayt dizisi kesimlerinin listesi.
- userRecord
- SequenceNumber
Kullanıcı tarafından belirtilen sırada bir sonraki kaydın sıra numarası.
- previousRecord
- SequenceNumber
Önceki sırada bir sonraki kaydın sıra numarası.
- recordAppendOptions
- RecordAppendOptions
Verilerin nasıl yazılması gerektiğini belirten geçerli değeri RecordAppendOptions .
- reservationCollection
- ReservationCollection
Rezervasyon yapmak için rezervasyon koleksiyonu.
- reservations
- Int64[]
Bayt cinsinden yapılması gereken rezervasyonlar.
Döndürülenler
Eklenen günlük kaydının sıra numarası.
Uygulamalar
Özel durumlar
Bir veya daha fazla bağımsız değişken geçersiz.
Kayıt eklenirken G/Ç hatası oluştu.
Kayıt sırası, yeni kaydı içerecek veya rezervasyonu yapmak için yeterli boş alan açamadı.
yöntemi, sıra atıldıktan sonra çağrıldı.
Bağımsız değişkenlerden biri veya daha fazlası şeklindedir null
.
userRecord
veya previousRecord
bu dizinin temel ve son sıra numaraları arasında değildir.
Kayıt sırası salt okunur erişimle açıldığından işlem gerçekleştirilemiyor.
Programın yürütülmesine devam etmek için yeterli bellek yok.
Belirtilen günlük dizisine erişim işletim sistemi tarafından reddedildi.
içinde sığacak data
kadar büyük rezervasyon bulunamaz reservations
.
Açıklamalar
parametresinde data
yer alan veriler, kayıt olarak eklenmek üzere tek bir bayt dizisinde birleştirilir. Ancak, kayıt okunduğunda verileri dizi kesimlerine bölmek için herhangi bir sağlama yapılmaz.
Belirtilen rezervasyonlar, bir kayıt ekleme işlemiyle atomik bir işlemde sağlanan rezervasyon koleksiyonuna eklenir. Ekleme başarısız olursa, hiçbir alan ayrılmaz.
Normalde, bu yöntem kayıt yazılmadan önce tamamlanabilir. Bir kaydın yazılmasını sağlamak için parametresini ForceFlush kullanarak recordAppendOptions
bayrağını belirtin veya yöntemini çağırın Flush .
Şunlara uygulanır
ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])
Otomatik olarak tek bir rezervasyon yapar ve bir kaydı diziye ekler. Bu yöntem devralınamaz.
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
Parametreler
- data
- ArraySegment<Byte>
Birleştirilecek ve kayıt olarak eklenecek bayt dizisi kesimlerinin listesi.
- nextUndoRecord
- SequenceNumber
Kullanıcı tarafından belirtilen sırada bir sonraki kaydın sıra numarası.
- previousRecord
- SequenceNumber
Önceki sırada bir sonraki kaydın sıra numarası.
- recordAppendOptions
- RecordAppendOptions
Verilerin nasıl yazılması gerektiğini belirten geçerli değeri RecordAppendOptions .
- reservationCollection
- ReservationCollection
ReservationCollection Rezervasyon yapmak için koleksiyonu içeren.
- reservations
- Int64[]
Bayt cinsinden yapılması gereken rezervasyonlar.
Döndürülenler
Eklenen günlük kaydının sıra numarası.
Uygulamalar
Özel durumlar
nextUndoRecord
veya previousRecord
bu dizi için geçerli değil.
-veya-
data
en büyük kayıt boyutundan büyük olduğundan eklenemiyor.
-veya-
reservations
bu kayıt dizisi tarafından oluşturulmadı.
Bağımsız değişkenlerden biri veya daha fazlası şeklindedir null
.
nextUndoRecord
veya previousRecord
bu dizinin temel ve son sıra numaraları arasında değildir.
Beklenmeyen bir G/Ç özel durumu nedeniyle istek gerçekleştirilemedi.
-veya-
G/Ç cihazı hatası nedeniyle istek gerçekleştirilemedi.
Kayıt sırası salt okunur erişimle açıldığından işlem gerçekleştirilemiyor.
yöntemi, sıra atıldıktan sonra çağrıldı.
Programın yürütülmesine devam etmek için yeterli bellek yok.
Kayıt sırası dolu.
Belirtilen günlük dizisine erişim işletim sistemi tarafından reddedildi.
içinde sığacak data
kadar büyük rezervasyon bulunamaz reservations
.
Örnekler
Aşağıdaki örnekte, rezervasyon yapmak için bu yöntemin nasıl kullanılacağı gösterilmektedir. Bu görevin yalnızca CLFS tabanlı LogRecordSequence sınıf kullanılırken gerçekleştirilebildiğine dikkat edin.
ReservationCollection reservations = recordSequence.CreateReservationCollection();
long[] lengthOfUndoRecords = new long[] { 1000 };
recordSequence.ReserveAndAppend(recordData,
userSqn,
previousSqn,
RecordSequenceAppendOptions.None,
reservations,
lengthOfUndoRecords);
recordSequence.Append(undoRecordData, // If necessary …
userSqn,
previousSqn,
RecordSequenceAppendOptions.ForceFlush,
reservations);
Açıklamalar
parametresinde data
yer alan veriler, kayıt olarak eklenmek üzere tek bir bayt dizisinde birleştirilir. Ancak, kayıt okunduğunda verileri dizi kesimlerine bölmek için herhangi bir sağlama yapılmaz.
Belirtilen rezervasyonlar, bir kayıt ekleme işlemiyle atomik bir işlemde sağlanan rezervasyon koleksiyonuna eklenir. Ekleme başarısız olursa, hiçbir alan ayrılmaz.
Normalde, bu yöntem kayıt yazılmadan önce tamamlanabilir. Bir kaydın yazılmasını sağlamak için parametresini ForceFlush kullanarak recordAppendOptions
bayrağını belirtin veya yöntemini çağırın Flush .