LogRecordSequence.Append 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將記錄寫入 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
不是介於這個順序的基底序號和最後一個序號之間。
記錄順序是以唯讀存取所開啟,無法執行作業。
已在處置序列之後呼叫此方法。
沒有足夠的記憶體可以繼續執行程式。
記錄順序已滿。
存取指定的記錄順序遭作業系統拒絕。
在 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
不是由此記錄順序所建立。
一或多個引數為 null
。
userRecord
或 previousRecord
不是介於這個順序的基底序號和最後一個序號之間。
記錄順序是以唯讀存取所開啟,無法執行作業。
已在處置序列之後呼叫此方法。
沒有足夠的記憶體可以繼續執行程式。
記錄順序已滿。
存取指定的記錄順序遭作業系統拒絕。
在 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
不是由此記錄順序所建立。
一或多個引數為 null
。
userRecord
或 previousRecord
不是介於這個順序的基底序號和最後一個序號之間。
記錄順序是以唯讀存取所開啟,無法執行作業。
已在處置序列之後呼叫此方法。
沒有足夠的記憶體可以繼續執行程式。
記錄順序已滿。
存取指定的記錄順序遭作業系統拒絕。
範例
下列範例將示範如何使用這個方法,將記錄附加到順序。
// 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
不是由此記錄順序所建立。
一或多個引數為 null
。
userRecord
或 previousRecord
不是介於這個順序的基底序號和最後一個序號之間。
記錄順序是以唯讀存取所開啟,無法執行作業。
已在處置序列之後呼叫此方法。
沒有足夠的記憶體可以繼續執行程式。
記錄順序已滿。
存取指定的記錄順序遭作業系統拒絕。
備註
包含在 data
參數中的資料將串連至單一位元組陣列中,以便附加成記錄。 不過,在讀取記錄時,並不會將資料分割回陣列區段。
此方法通常會在寫入記錄前完成。 若要確定已寫入某筆記錄,請使用 ForceFlush 參數指定 recordAppendOptions
旗標,或是呼叫 Flush 方法。