FileRecordSequence Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Implementa una IRecordSequence sobre un archivo. Esta clase no puede heredarse.
public ref class FileRecordSequence sealed : IDisposable, System::IO::Log::IRecordSequence
public sealed class FileRecordSequence : IDisposable, System.IO.Log.IRecordSequence
type FileRecordSequence = class
interface IRecordSequence
interface IDisposable
Public NotInheritable Class FileRecordSequence
Implements IDisposable, IRecordSequence
- Herencia
-
FileRecordSequence
- Implementaciones
Ejemplos
El siguiente ejemplo crea una secuencia de registro, anexa el registro a ella y finalmente lee los registros.
public class MyLog
{
string logName = "test.log";
FileRecordSequence sequence = null;
bool delete = true;
public MyLog()
{
// Create a FileRecordSequence.
sequence = new FileRecordSequence(logName, FileAccess.ReadWrite);
}
// Append records to the record sequence.
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 FileRecordSequence..."), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush);
Console.WriteLine("Done...");
}
// Read the records added to the log.
public void ReadRecords()
{
Encoding enc = Encoding.Unicode;
Console.WriteLine();
Console.WriteLine("Reading Log Records...");
try
{
foreach (LogRecord record in this.sequence.ReadLogRecords(this.sequence.BaseSequenceNumber, LogRecordEnumeratorType.Next))
{
byte[] data = new byte[record.Data.Length];
record.Data.Read(data, 0, (int)record.Data.Length);
string mystr = enc.GetString(data);
Console.WriteLine(" {0}", mystr);
}
}
catch (Exception e)
{
Console.WriteLine("Exception {0} {1}", e.GetType(), e.Message);
}
Console.WriteLine();
}
// Dispose the record sequence and delete the log file.
public void Cleanup()
{
// Dispose the sequence.
sequence.Dispose();
// Delete the log file.
if (delete)
{
try
{
File.Delete(this.logName);
}
catch (Exception e)
{
Console.WriteLine("Exception {0} {1}", e.GetType(), e.Message);
}
}
}
// Converts the given data to an Array of ArraySegment<byte>
public static IList<ArraySegment<byte>> CreateData(string str)
{
Encoding enc = Encoding.Unicode;
byte[] array = enc.GetBytes(str);
ArraySegment<byte>[] segments = new ArraySegment<byte>[1];
segments[0] = new ArraySegment<byte>(array);
return Array.AsReadOnly<ArraySegment<byte>>(segments);
}
}
class LogSample
{
static void Main2(string[] args)
{
MyLog log = new MyLog();
log.AppendRecords();
log.ReadRecords();
log.Cleanup();
}
}
Public Class MyLog
Private logName As String = "test.log"
Private sequence As FileRecordSequence = Nothing
Private delete As Boolean = True
Public Sub New()
' Create a FileRecordSequence.
sequence = New FileRecordSequence(logName, FileAccess.ReadWrite)
End Sub
' Append records to the record sequence.
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 FileRecordSequence..."), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)
Console.WriteLine("Done...")
End Sub
' Read the records added to the log.
Public Sub ReadRecords()
Dim enc As Encoding = Encoding.Unicode
Console.WriteLine()
Console.WriteLine("Reading Log Records...")
Try
For Each record In Me.sequence.ReadLogRecords(Me.sequence.BaseSequenceNumber, LogRecordEnumeratorType.Next)
Dim data(record.Data.Length - 1) As Byte
record.Data.Read(data, 0, CInt(Fix(record.Data.Length)))
Dim mystr As String = enc.GetString(data)
Console.WriteLine(" {0}", mystr)
Next record
Catch e As Exception
Console.WriteLine("Exception {0} {1}", e.GetType(), e.Message)
End Try
Console.WriteLine()
End Sub
' Dispose the record sequence and delete the log file.
Public Sub Cleanup()
' Dispose the sequence.
sequence.Dispose()
' Delete the log file.
If delete Then
Try
File.Delete(Me.logName)
Catch e As Exception
Console.WriteLine("Exception {0} {1}", e.GetType(), e.Message)
End Try
End If
End Sub
' Converts the given data to an Array of ArraySegment<byte>
Public Shared Function CreateData(ByVal str As String) As IList(Of ArraySegment(Of Byte))
Dim enc As Encoding = Encoding.Unicode
Dim array() As Byte = enc.GetBytes(str)
Dim segments(0) As ArraySegment(Of Byte)
segments(0) = New ArraySegment(Of Byte)(array)
Return System.Array.AsReadOnly(Of ArraySegment(Of Byte))(segments)
End Function
End Class
Friend Class LogSample
Private Shared Sub Main2(ByVal args() As String)
Dim log As New MyLog()
log.AppendRecords()
log.ReadRecords()
log.Cleanup()
End Sub
End Class
Comentarios
FileRecordSequence es una secuencia de registro basada en un archivo de registro único del sistema de archivos. Es una implementación simple de la interfaz IRecordSequence sobre un registro basado en archivos simple.
Para manipular un registro basado en archivos, la cuenta en la que se ejecuta su aplicación debe tener los privilegios suficientes, tal y como lo dicta la seguridad del sistema de archivos en el momento que se construye FileRecordSequence. Además, en el momento de la construcción se realiza una petición de FullTrust. Los resultados de la comprobación del permiso se almacenan después en memoria caché siguiendo el modelo de seguridad de Windows. Debería asegurarse que no expone accidentalmente el contenido de la secuencia del registro a un usuario sin autorización.
Constructores
FileRecordSequence(String) |
Inicializa una nueva instancia de la clase FileRecordSequence con un archivo especificado. |
FileRecordSequence(String, FileAccess) |
Inicializa una nueva instancia de la clase FileRecordSequence con un archivo especificado y un modo de acceso. |
FileRecordSequence(String, FileAccess, Int32) |
Inicializa una nueva instancia de la clase FileRecordSequence con un archivo especificado, un modo de acceso y un tamaño de archivo. |
Propiedades
BaseSequenceNumber |
Obtiene el número de secuencia del primer registro válido en la FileRecordSequence actual. |
LastSequenceNumber |
Obtiene el número de secuencia que es mayor que el último registro anexado. |
MaximumRecordLength |
Obtiene el tamaño del mayor registro que se puede anexar a o leerse desde esta secuencia, en bytes. |
ReservedBytes |
Obtiene el número total de bytes que se ha reservado. |
RestartSequenceNumber |
Obtiene el número de secuencia del área de reinicio recientemente escrita. |
RetryAppend |
Obtiene o establece un valor que indica si los anexos se reintentan automáticamente en caso de que el registro esté completo. |
Métodos
AdvanceBaseSequenceNumber(SequenceNumber) |
Avanza el número de secuencia base del registro. Este método no se puede heredar. |
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions) |
Escribe una entrada de registro en la FileRecordSequence. Este método no se puede heredar. |
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection) |
Escribe una entrada de registro en la FileRecordSequence, utilizando el espacio previamente reservado en la secuencia. Este método no se puede heredar. |
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions) |
Escribe una entrada de registro en la FileRecordSequence. Este método no se puede heredar. |
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection) |
Escribe una entrada de registro en la FileRecordSequence, utilizando el espacio previamente reservado en la secuencia. Este método no se puede heredar. |
BeginAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, AsyncCallback, Object) |
Comienza una operación de anexado asincrónica. Este método no se puede heredar. |
BeginAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, AsyncCallback, Object) |
Comienza una operación de anexado asincrónica que utiliza el espacio previamente reservado en la secuencia. Este método no se puede heredar. |
BeginAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, AsyncCallback, Object) |
Comienza una operación de anexado asincrónica. Este método no se puede heredar. |
BeginAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, AsyncCallback, Object) |
Comienza una operación de anexado asincrónica que utiliza el espacio previamente reservado en la secuencia. Este método no se puede heredar. |
BeginFlush(SequenceNumber, AsyncCallback, Object) |
Comienza una operación de vaciado asincrónica, utilizando el espacio previamente reservado en la secuencia. Este método no se puede heredar. |
BeginReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object) |
Comienza una reserva asincrónica y una operación de anexado. Este método no se puede heredar. |
BeginReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object) |
Comienza una reserva asincrónica y una operación de anexado. Este método no se puede heredar. |
BeginWriteRestartArea(ArraySegment<Byte>, SequenceNumber, ReservationCollection, AsyncCallback, Object) |
Comienza una operación de escritura de área de reinicio asincrónica, utilizando el espacio reservado previamente en la secuencia. Este método no se puede heredar. |
BeginWriteRestartArea(IList<ArraySegment<Byte>>, SequenceNumber, ReservationCollection, AsyncCallback, Object) |
Comienza una operación de escritura de área de reinicio asincrónica, utilizando el espacio reservado previamente en la secuencia. Este método no se puede heredar. |
CreateReservationCollection() |
Crea un nuevo ReservationCollection. Este método no se puede heredar. |
Dispose() |
Inmediatamente libera los recursos no administrados utilizados por un objeto. |
EndAppend(IAsyncResult) |
Finaliza una operación de anexado asincrónica. Este método no se puede heredar. |
EndFlush(IAsyncResult) |
Finaliza una operación de vaciado asincrónica. Este método no se puede heredar. |
EndReserveAndAppend(IAsyncResult) |
Finaliza una reserva asincrónica y una operación de anexado. Este método no se puede heredar. |
EndWriteRestartArea(IAsyncResult) |
Finaliza una operación de escritura de área de reinicio asincrónica. Este método no se puede heredar. |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
Flush() |
Asegúrese de que todos los registros anexados se han escrito. Este método no se puede heredar. |
Flush(SequenceNumber) |
Asegúrese de que todos los registros anexados se han escrito. Este método no se puede heredar. |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
ReadLogRecords(SequenceNumber, LogRecordEnumeratorType) |
Devuelve una colección enumerable de registros en la secuencia. Este método no se puede heredar. |
ReadRestartAreas() |
Devuelve una colección enumerable de las áreas de reinicio de la secuencia. Este método no se puede heredar. |
ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Realiza automáticamente una reserva única y anexa un registro a la secuencia. Este método no se puede heredar. |
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Realiza automáticamente una reserva única y anexa un registro a la secuencia. Este método no se puede heredar. |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
WriteRestartArea(ArraySegment<Byte>) |
Escribe una área de reinicio en FileRecordSequence. Este método no se puede heredar. |
WriteRestartArea(ArraySegment<Byte>, SequenceNumber) |
Escribe una área de reinicio en FileRecordSequence. Este método no se puede heredar. |
WriteRestartArea(ArraySegment<Byte>, SequenceNumber, ReservationCollection) |
Escribe una área de reinicio en FileRecordSequence. Este método no se puede heredar. |
WriteRestartArea(IList<ArraySegment<Byte>>) |
Escribe una área de reinicio en FileRecordSequence. Este método no se puede heredar. |
WriteRestartArea(IList<ArraySegment<Byte>>, SequenceNumber) |
Escribe una área de reinicio en FileRecordSequence. Este método no se puede heredar. |
WriteRestartArea(IList<ArraySegment<Byte>>, SequenceNumber, ReservationCollection) |
Escribe una área de reinicio en FileRecordSequence. Este método no se puede heredar. |
Eventos
TailPinned |
Se produce cuando la secuencia del registro determina que se debe avanzar la cola. Este método no se puede heredar. |