LogRecordSequence.Append Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Scrive un record di log in IRecordSequence.
Overload
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection) |
Accoda un record di log a IRecordSequence utilizzando spazio precedentemente riservato nella sequenza. Questo metodo non può essere ereditato. |
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection) |
Accoda un record di log a IRecordSequence utilizzando spazio precedentemente riservato nella sequenza. Questo metodo non può essere ereditato. |
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions) |
Scrive un record di log in LogRecordSequence. Questo metodo non può essere ereditato. |
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions) |
Aggiunge un record di log a IRecordSequence. Questo metodo non può essere ereditato. |
Esempio
In questo esempio viene illustrato come utilizzare il membro 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)
Accoda un record di log a IRecordSequence utilizzando spazio precedentemente riservato nella sequenza. Questo metodo non può essere ereditato.
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
Parametri
- data
- ArraySegment<Byte>
Elenco di segmenti della matrice di byte che verranno concatenati e accodati come record.
- nextUndoRecord
- SequenceNumber
Numero di sequenza del record successivo nell'ordine specificato dall'utente.
- previousRecord
- SequenceNumber
Numero di sequenza del record successivo nell'ordine Precedente.
- recordAppendOptions
- RecordAppendOptions
Valore valido di RecordAppendOptions che specifica la modalità da utilizzare per la scrittura dei dati.
- reservations
- ReservationCollection
Classe ReservationCollection contenente la prenotazione da utilizzare per questo record.
Restituisce
Numero di sequenza del record di registro accodato.
Implementazioni
Eccezioni
userRecord
o previousRecord
non è valido per questa sequenza.
-oppure-
Non è possibile aggiungere data
perché le dimensioni superano le dimensioni massime dei record.
-oppure-
reservations
non è stato creato da questa sequenza di record.
Uno o più argomenti sono null
.
userRecord
o previousRecord
non è compreso tra i numeri di sequenza di base e finale di questa sequenza.
Impossibile eseguire la richiesta a causa di un'eccezione I/O imprevista.
-oppure-
Impossibile eseguire la richiesta a causa di un errore del dispositivo di I/O.
L'operazione non può essere eseguita perché la sequenza di record è stata aperta con accesso in sola lettura.
Il metodo è stato chiamato dopo l'eliminazione sequenza.
Memoria insufficiente per continuare l'esecuzione del programma.
Sequenza di record piena.
L'accesso per la sequenza dei log specificata viene negato dal sistema operativo.
Impossibile trovare una prenotazione abbastanza grande da soddisfare il parametro data
in reservations
.
Commenti
I dati contenuti nel parametro data
verranno concatenati in una matrice a byte singolo per essere quindi accodati come record. Tuttavia, non esiste alcun provisioning per suddividere dati in segmenti della matrice una volta letto il record.
Il record accodato utilizzerà spazio precedentemente riservato, utilizzando una prenotazione specificata dal parametro reservations
. Se l'accodamento riesce, utilizzerà la più piccola area della prenotazione che può contenere i dati e quell'area sarà rimossa dalla raccolta.
In genere questo metodo viene completato prima che il record sia stato scritto. Per garantire che un record è stato scritto, specificare il flag ForceFlush utilizzando il parametro recordAppendOptions
oppure chiamare il metodo Flush.
Si applica a
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection)
Accoda un record di log a IRecordSequence utilizzando spazio precedentemente riservato nella sequenza. Questo metodo non può essere ereditato.
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
Parametri
- data
- IList<ArraySegment<Byte>>
Elenco di segmenti della matrice di byte che verranno concatenati e accodati come record.
- userRecord
- SequenceNumber
Numero di sequenza del record successivo nell'ordine specificato dall'utente.
- previousRecord
- SequenceNumber
Numero di sequenza del record successivo nell'ordine Precedente.
- recordAppendOptions
- RecordAppendOptions
Valore valido di RecordAppendOptions che specifica la modalità da utilizzare per la scrittura dei dati.
- reservations
- ReservationCollection
Classe ReservationCollection contenente la prenotazione da utilizzare per questo record.
Restituisce
Numero di sequenza del record di registro accodato.
Implementazioni
Eccezioni
userRecord
o previousRecord
non è valido per questa sequenza.
-oppure-
Non è possibile aggiungere data
perché le dimensioni superano le dimensioni massime dei record.
-oppure-
reservations
non è stato creato da questa sequenza di record.
Uno o più argomenti sono null
.
userRecord
o previousRecord
non è compreso tra i numeri di sequenza di base e finale di questa sequenza.
Impossibile eseguire la richiesta a causa di un'eccezione I/O imprevista.
-oppure-
Impossibile eseguire la richiesta a causa di un errore del dispositivo di I/O.
L'operazione non può essere eseguita perché la sequenza di record è stata aperta con accesso in sola lettura.
Il metodo è stato chiamato dopo l'eliminazione sequenza.
Memoria insufficiente per continuare l'esecuzione del programma.
Sequenza di record piena.
L'accesso per la sequenza dei log specificata viene negato dal sistema operativo.
Impossibile trovare una prenotazione abbastanza grande da soddisfare il parametro data
in reservations
.
Commenti
I dati contenuti nel parametro data
verranno concatenati in una matrice a byte singolo per essere quindi accodati come record. Tuttavia, non esiste alcun provisioning per suddividere dati in segmenti della matrice una volta letto il record.
Il record accodato utilizzerà spazio precedentemente riservato, utilizzando una prenotazione specificata dal parametro reservations
. Se l'accodamento riesce, utilizzerà la più piccola area della prenotazione che può contenere i dati e quell'area sarà rimossa dalla raccolta.
In genere questo metodo viene completato prima che il record sia stato scritto. Per garantire che un record è stato scritto, specificare il flag ForceFlush utilizzando il parametro recordAppendOptions
oppure chiamare il metodo Flush.
Si applica a
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions)
Scrive un record di log in LogRecordSequence. Questo metodo non può essere ereditato.
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
Parametri
- data
- ArraySegment<Byte>
Elenco di segmenti della matrice di byte che verranno concatenati e accodati come record.
- nextUndoRecord
- SequenceNumber
Numero di sequenza del record successivo nell'ordine specificato dall'utente.
- previousRecord
- SequenceNumber
Numero di sequenza del record successivo nell'ordine Precedente.
- recordAppendOptions
- RecordAppendOptions
Valore valido di RecordAppendOptions che specifica la modalità da utilizzare per la scrittura dei dati.
Restituisce
Numero di sequenza del record di registro accodato.
Implementazioni
Eccezioni
userRecord
o previousRecord
non è valido per questa sequenza.
-oppure-
Non è possibile aggiungere data
perché le dimensioni superano le dimensioni massime dei record.
-oppure-
reservations
non è stato creato da questa sequenza di record.
Uno o più argomenti sono null
.
userRecord
o previousRecord
non è compreso tra i numeri di sequenza di base e finale di questa sequenza.
Impossibile eseguire la richiesta a causa di un'eccezione I/O imprevista.
-oppure-
Impossibile eseguire la richiesta a causa di un errore del dispositivo di I/O.
L'operazione non può essere eseguita perché la sequenza di record è stata aperta con accesso in sola lettura.
Il metodo è stato chiamato dopo l'eliminazione sequenza.
Memoria insufficiente per continuare l'esecuzione del programma.
Sequenza di record piena.
L'accesso per la sequenza dei log specificata viene negato dal sistema operativo.
Esempio
Nell'esempio seguente viene dimostrato come utilizzare questo metodo per aggiungere un record di log alla sequenza.
// 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)
Commenti
I dati contenuti nel parametro data
verranno concatenati in una matrice a byte singolo per essere quindi accodati come record. Tuttavia, non esiste alcun provisioning per suddividere dati in segmenti della matrice una volta letto il record.
In genere questo metodo viene completato prima che il record sia stato scritto. Per garantire che un record è stato scritto, specificare il flag ForceFlush utilizzando il parametro recordAppendOptions
oppure chiamare il metodo Flush.
Si applica a
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions)
Aggiunge un record di log a IRecordSequence. Questo metodo non può essere ereditato.
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
Parametri
- data
- IList<ArraySegment<Byte>>
Elenco di segmenti della matrice di byte che verranno concatenati e accodati come record.
- userRecord
- SequenceNumber
Numero di sequenza del record successivo nell'ordine specificato dall'utente.
- previousRecord
- SequenceNumber
Numero di sequenza del record successivo nell'ordine Precedente.
- recordAppendOptions
- RecordAppendOptions
Valore valido di RecordAppendOptions che specifica la modalità da utilizzare per la scrittura dei dati.
Restituisce
Numero di sequenza del record di registro accodato.
Implementazioni
Eccezioni
userRecord
o previousRecord
non è valido per questa sequenza.
-oppure-
Non è possibile aggiungere data
perché le dimensioni superano le dimensioni massime dei record.
-oppure-
reservations
non è stato creato da questa sequenza di record.
Uno o più argomenti sono null
.
userRecord
o previousRecord
non è compreso tra i numeri di sequenza di base e finale di questa sequenza.
Impossibile eseguire la richiesta a causa di un'eccezione I/O imprevista.
-oppure-
Impossibile eseguire la richiesta a causa di un errore del dispositivo di I/O.
L'operazione non può essere eseguita perché la sequenza di record è stata aperta con accesso in sola lettura.
Il metodo è stato chiamato dopo l'eliminazione sequenza.
Memoria insufficiente per continuare l'esecuzione del programma.
Sequenza di record piena.
L'accesso per la sequenza dei log specificata viene negato dal sistema operativo.
Commenti
I dati contenuti nel parametro data
verranno concatenati in una matrice a byte singolo per essere quindi accodati come record. Tuttavia, non esiste alcun provisioning per suddividere dati in segmenti della matrice una volta letto il record.
In genere questo metodo viene completato prima che il record sia stato scritto. Per garantire che un record è stato scritto, specificare il flag ForceFlush utilizzando il parametro recordAppendOptions
oppure chiamare il metodo Flush.