FileRecordSequence Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Implementuje nad IRecordSequence souborem. Tato třída se nemůže dědit.
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
- Dědičnost
-
FileRecordSequence
- Implementuje
Příklady
Následující příklad vytvoří sekvenci záznamů, připojí k němu záznam a nakonec přečte záznamy.
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
Poznámky
Jedná se FileRecordSequence o sekvenci záznamů založenou na jednom souboru protokolu v systému souborů. Jedná se o jednoduchou implementaci IRecordSequence rozhraní nad jednoduchým protokolem založeným na souborech.
Pokud chcete pracovat s protokolem založeným na souborech, musí mít účet, ve kterém je vaše aplikace spuštěná, dostatečná oprávnění, jak určuje zabezpečení systému souborů v době, kdy FileRecordSequence je vytvořena. Kromě toho se poptávka po FullTrustu provádí v době výstavby. Výsledky ověření oprávnění se následně ukládají do mezipaměti v souladu s modelem zabezpečení Windows. Měli byste zajistit, abyste nechtěně nezpřístupnili obsah sekvence záznamů neoprávněnému uživateli.
Konstruktory
| Name | Description |
|---|---|
| FileRecordSequence(String, FileAccess, Int32) |
Inicializuje novou instanci FileRecordSequence třídy se zadaným souborem, režimem přístupu a velikostí souboru. |
| FileRecordSequence(String, FileAccess) |
Inicializuje novou instanci FileRecordSequence třídy se zadaným souborem a režimem přístupu. |
| FileRecordSequence(String) |
Inicializuje novou instanci FileRecordSequence třídy se zadaným souborem. |
Vlastnosti
| Name | Description |
|---|---|
| BaseSequenceNumber |
Získá pořadové číslo prvního platného záznamu v aktuálním FileRecordSequence. |
| LastSequenceNumber |
Získá pořadové číslo, které je větší než poslední připojený záznam. |
| MaximumRecordLength |
Získá velikost největšího záznamu, který lze připojit k této sekvenci nebo číst z této sekvence v bajtech. |
| ReservedBytes |
Získá celkový počet bajtů, které byly rezervovány. |
| RestartSequenceNumber |
Získá pořadové číslo naposledy napsané oblasti restartování. |
| RetryAppend |
Získá nebo nastaví hodnotu označující, zda jsou připojení automaticky opakovat, pokud je protokol plný. |
Metody
| Name | Description |
|---|---|
| AdvanceBaseSequenceNumber(SequenceNumber) |
Přesune základní pořadové číslo protokolu dopředu. Tuto metodu nelze zdědit. |
| Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection) |
Zapíše záznam protokolu do záznamu FileRecordSequence, pomocí mezery dříve rezervované v sekvenci. Tuto metodu nelze zdědit. |
| Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions) |
Zapíše záznam protokolu do záznamu FileRecordSequence. Tuto metodu nelze zdědit. |
| Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection) |
Zapíše záznam protokolu do záznamu FileRecordSequence, pomocí mezery dříve rezervované v sekvenci. Tuto metodu nelze zdědit. |
| Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions) |
Zapíše záznam protokolu do záznamu FileRecordSequence. Tuto metodu nelze zdědit. |
| BeginAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, AsyncCallback, Object) |
Zahájí asynchronní operaci připojení. Tuto metodu nelze zdědit. |
| BeginAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, AsyncCallback, Object) |
Zahájí asynchronní operaci připojení pomocí místa, které bylo dříve vyhrazeno v sekvenci. Tuto metodu nelze zdědit. |
| BeginAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, AsyncCallback, Object) |
Zahájí asynchronní operaci připojení. Tuto metodu nelze zdědit. |
| BeginAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, AsyncCallback, Object) |
Zahájí asynchronní operaci připojení pomocí místa, které bylo dříve vyhrazeno v sekvenci. Tuto metodu nelze zdědit. |
| BeginFlush(SequenceNumber, AsyncCallback, Object) |
Zahájí asynchronní operaci vyprazdnutí pomocí místa, které bylo dříve vyhrazeno v posloupnosti. Tuto metodu nelze zdědit. |
| BeginReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object) |
Zahájí asynchronní rezervaci a operaci připojení. Tuto metodu nelze zdědit. |
| BeginReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object) |
Zahájí asynchronní rezervaci a operaci připojení. Tuto metodu nelze zdědit. |
| BeginWriteRestartArea(ArraySegment<Byte>, SequenceNumber, ReservationCollection, AsyncCallback, Object) |
Zahájí asynchronní operaci zápisu do oblasti restartování pomocí místa, které bylo dříve vyhrazeno v sekvenci. Tuto metodu nelze zdědit. |
| BeginWriteRestartArea(IList<ArraySegment<Byte>>, SequenceNumber, ReservationCollection, AsyncCallback, Object) |
Zahájí asynchronní operaci zápisu do oblasti restartování pomocí místa, které bylo dříve vyhrazeno v sekvenci. Tuto metodu nelze zdědit. |
| CreateReservationCollection() |
Vytvoří novou ReservationCollection. Tuto metodu nelze zdědit. |
| Dispose() |
Okamžitě uvolní nespravované prostředky používané objektem. |
| EndAppend(IAsyncResult) |
Ukončí asynchronní operaci připojení. Tuto metodu nelze zdědit. |
| EndFlush(IAsyncResult) |
Ukončí asynchronní operaci vyprazdnutí. Tuto metodu nelze zdědit. |
| EndReserveAndAppend(IAsyncResult) |
Ukončí asynchronní rezervaci a operaci připojení. Tuto metodu nelze zdědit. |
| EndWriteRestartArea(IAsyncResult) |
Ukončí asynchronní operaci zápisu do oblasti restartování. Tuto metodu nelze zdědit. |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| Flush() |
Zajišťuje zápis všech připojených záznamů. Tuto metodu nelze zdědit. |
| Flush(SequenceNumber) |
Zajišťuje zápis všech připojených záznamů. Tuto metodu nelze zdědit. |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| ReadLogRecords(SequenceNumber, LogRecordEnumeratorType) |
Vrátí výčet kolekcí záznamů v sekvenci. Tuto metodu nelze zdědit. |
| ReadRestartAreas() |
Vrátí výčtovou kolekci oblastí restartování v sekvenci. Tuto metodu nelze zdědit. |
| ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Automaticky vytvoří jednu rezervaci a připojí k sekvenci záznam. Tuto metodu nelze zdědit. |
| ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Automaticky vytvoří jednu rezervaci a připojí k sekvenci záznam. Tuto metodu nelze zdědit. |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
| WriteRestartArea(ArraySegment<Byte>, SequenceNumber, ReservationCollection) |
Zapíše do FileRecordSequenceoblasti restartování . Tuto metodu nelze zdědit. |
| WriteRestartArea(ArraySegment<Byte>, SequenceNumber) |
Zapíše do FileRecordSequenceoblasti restartování . Tuto metodu nelze zdědit. |
| WriteRestartArea(ArraySegment<Byte>) |
Zapíše do FileRecordSequenceoblasti restartování . Tuto metodu nelze zdědit. |
| WriteRestartArea(IList<ArraySegment<Byte>>, SequenceNumber, ReservationCollection) |
Zapíše do FileRecordSequenceoblasti restartování . Tuto metodu nelze zdědit. |
| WriteRestartArea(IList<ArraySegment<Byte>>, SequenceNumber) |
Zapíše do FileRecordSequenceoblasti restartování . Tuto metodu nelze zdědit. |
| WriteRestartArea(IList<ArraySegment<Byte>>) |
Zapíše do FileRecordSequenceoblasti restartování . Tuto metodu nelze zdědit. |
Událost
| Name | Description |
|---|---|
| TailPinned |
Nastane, když posloupnost záznamů určuje, že ocas musí být přesunut dopředu. Tuto metodu nelze zdědit. |