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 soubor . 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í záznam a nakonec záznamy přečte.
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
Je FileRecordSequence posloupnost záznamů založená na jednom souboru protokolu v systému souborů. Jedná se o jednoduchou implementaci IRecordSequence rozhraní nad jednoduchým souborovým protokolem.
Pokud chcete pracovat se souborovým protokolem, musí mít účet, ve kterém je vaše aplikace spuštěná, dostatečná oprávnění, jak to určuje zabezpečení systému souborů v době FileRecordSequence vytvoření. Kromě toho je požadavek na FullTrust učiněn v době výstavby. Výsledky ověření oprávnění se poté ukládají do mezipaměti v souladu s modelem zabezpečení Windows. Měli byste se ujistit, že obsah sekvence záznamů nechtěně nevystavíte neoprávněnému uživateli.
Konstruktory
FileRecordSequence(String) |
Inicializuje novou instanci FileRecordSequence třídy se zadaným souborem. |
FileRecordSequence(String, FileAccess) |
Inicializuje novou instanci FileRecordSequence třídy se zadaným souborem a režimem přístupu. |
FileRecordSequence(String, FileAccess, Int32) |
Inicializuje novou instanci FileRecordSequence třídy se zadaným souborem, režimem přístupu a velikostí souboru. |
Vlastnosti
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 zapsané oblasti restartování. |
RetryAppend |
Získá nebo nastaví hodnotu označující, zda jsou připojení automaticky opakovat, pokud je protokol plný. |
Metody
AdvanceBaseSequenceNumber(SequenceNumber) |
Přesune základní pořadové číslo protokolu dopředu. Tuto metodu nelze dědit. |
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions) |
Zapíše záznam protokolu do .FileRecordSequence Tuto metodu nelze dědit. |
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection) |
Zapíše záznam protokolu do FileRecordSequencesouboru s použitím mezery, které byly v pořadí dříve vyhrazeny. Tuto metodu nelze dědit. |
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions) |
Zapíše záznam protokolu do .FileRecordSequence Tuto metodu nelze dědit. |
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection) |
Zapíše záznam protokolu do FileRecordSequencesouboru s použitím mezery, které byly v pořadí dříve vyhrazeny. Tuto metodu nelze dědit. |
BeginAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, AsyncCallback, Object) |
Zahájí asynchronní operaci připojení. Tuto metodu nelze dědit. |
BeginAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, AsyncCallback, Object) |
Zahájí asynchronní operaci připojení pomocí mezery, která byla dříve vyhrazena v sekvenci. Tuto metodu nelze dědit. |
BeginAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, AsyncCallback, Object) |
Zahájí asynchronní operaci připojení. Tuto metodu nelze dědit. |
BeginAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, AsyncCallback, Object) |
Zahájí asynchronní operaci připojení pomocí mezery, která byla dříve vyhrazena v sekvenci. Tuto metodu nelze dědit. |
BeginFlush(SequenceNumber, AsyncCallback, Object) |
Zahájí asynchronní operaci vyprázdnění s použitím místa, které bylo dříve v pořadí vyhrazeno. Tuto metodu nelze dědit. |
BeginReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object) |
Zahájí asynchronní operaci rezervace a připojení. Tuto metodu nelze dědit. |
BeginReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object) |
Zahájí asynchronní operaci rezervace a připojení. Tuto metodu nelze dědit. |
BeginWriteRestartArea(ArraySegment<Byte>, SequenceNumber, ReservationCollection, AsyncCallback, Object) |
Zahájí asynchronní operaci zápisu do oblasti restartování s využitím místa, které bylo dříve rezervováno v sekvenci. Tuto metodu nelze dědit. |
BeginWriteRestartArea(IList<ArraySegment<Byte>>, SequenceNumber, ReservationCollection, AsyncCallback, Object) |
Zahájí asynchronní operaci zápisu do oblasti restartování s využitím místa, které bylo dříve rezervováno v sekvenci. Tuto metodu nelze dědit. |
CreateReservationCollection() |
Vytvoří nový objekt ReservationCollection. Tuto metodu nelze dědit. |
Dispose() |
Okamžitě uvolní nespravované prostředky používané objektem. |
EndAppend(IAsyncResult) |
Ukončí asynchronní operaci připojení. Tuto metodu nelze dědit. |
EndFlush(IAsyncResult) |
Ukončí operaci asynchronního vyprázdnění. Tuto metodu nelze dědit. |
EndReserveAndAppend(IAsyncResult) |
Ukončí asynchronní operaci rezervace a připojení. Tuto metodu nelze dědit. |
EndWriteRestartArea(IAsyncResult) |
Ukončí asynchronní operaci restartování oblasti zápisu. Tuto metodu nelze dědit. |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
Flush() |
Zajišťuje, aby byly zapsány všechny připojené záznamy. Tuto metodu nelze dědit. |
Flush(SequenceNumber) |
Zajišťuje, aby byly zapsány všechny připojené záznamy. Tuto metodu nelze dědit. |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
ReadLogRecords(SequenceNumber, LogRecordEnumeratorType) |
Vrátí výčtovou kolekci záznamů v sekvenci. Tuto metodu nelze dědit. |
ReadRestartAreas() |
Vrátí výčtovou kolekci oblastí restartování v sekvenci. Tuto metodu nelze dědit. |
ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Automaticky vytvoří jednu rezervaci a připojí k sekvenci záznam. Tuto metodu nelze dědit. |
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Automaticky vytvoří jednu rezervaci a připojí k sekvenci záznam. Tuto metodu nelze dědit. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
WriteRestartArea(ArraySegment<Byte>) |
Zapíše oblast restartování do .FileRecordSequence Tuto metodu nelze dědit. |
WriteRestartArea(ArraySegment<Byte>, SequenceNumber) |
Zapíše oblast restartování do .FileRecordSequence Tuto metodu nelze dědit. |
WriteRestartArea(ArraySegment<Byte>, SequenceNumber, ReservationCollection) |
Zapíše oblast restartování do .FileRecordSequence Tuto metodu nelze dědit. |
WriteRestartArea(IList<ArraySegment<Byte>>) |
Zapíše oblast restartování do .FileRecordSequence Tuto metodu nelze dědit. |
WriteRestartArea(IList<ArraySegment<Byte>>, SequenceNumber) |
Zapíše oblast restartování do .FileRecordSequence Tuto metodu nelze dědit. |
WriteRestartArea(IList<ArraySegment<Byte>>, SequenceNumber, ReservationCollection) |
Zapíše oblast restartování do .FileRecordSequence Tuto metodu nelze dědit. |
Událost
TailPinned |
Vyvolá se, když posloupnost záznamů určí, že chvost musí být posunut dopředu. Tuto metodu nelze dědit. |