FileRecordSequence Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
IRecordSequence Mengimplementasikan di atas file. Kelas ini tidak dapat diwariskan.
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
- Warisan
-
FileRecordSequence
- Penerapan
Contoh
Contoh berikut membuat urutan rekaman, menambahkan rekaman ke dalamnya, dan akhirnya membaca rekaman.
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
Keterangan
FileRecordSequence adalah urutan rekaman berdasarkan satu file log dalam sistem file. Ini adalah implementasi sederhana dari IRecordSequence antarmuka, di atas log berbasis file sederhana.
Untuk memanipulasi log berbasis file, akun tempat aplikasi Anda berjalan harus memiliki hak istimewa yang memadai, seperti yang ditentukan oleh keamanan sistem file pada saat FileRecordSequence dibangun. Selain itu, permintaan untuk FullTrust dibuat pada waktu konstruksi. Hasil verifikasi izin di-cache setelahnya sesuai dengan model keamanan Windows. Anda harus memastikan bahwa Anda tidak secara tidak sengaja mengekspos konten urutan rekaman kepada pengguna yang tidak sah.
Konstruktor
FileRecordSequence(String) |
Menginisialisasi instans FileRecordSequence baru kelas dengan file tertentu. |
FileRecordSequence(String, FileAccess) |
Menginisialisasi instans FileRecordSequence baru kelas dengan file tertentu dan mode akses. |
FileRecordSequence(String, FileAccess, Int32) |
Menginisialisasi instans FileRecordSequence baru kelas dengan file tertentu, mode akses, dan ukuran file. |
Properti
BaseSequenceNumber |
Mendapatkan nomor urut dari rekaman valid pertama di saat ini FileRecordSequence. |
LastSequenceNumber |
Mendapatkan nomor urut yang lebih besar dari catatan terakhir yang ditambahkan. |
MaximumRecordLength |
Mendapatkan ukuran rekaman terbesar yang dapat ditambahkan ke atau dibaca dari urutan ini, dalam byte. |
ReservedBytes |
Mendapatkan jumlah total byte yang telah dipesan. |
RestartSequenceNumber |
Mendapatkan nomor urut dari area hidupkan ulang yang terakhir ditulis. |
RetryAppend |
Mendapatkan atau menetapkan nilai yang menunjukkan apakah penampan dicoba kembali secara otomatis atau tidak jika log penuh. |
Metode
AdvanceBaseSequenceNumber(SequenceNumber) |
Memindahkan nomor urutan dasar log ke depan. Metode ini tidak dapat diwariskan. |
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions) |
Menulis catatan log ke FileRecordSequence. Metode ini tidak dapat diwariskan. |
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection) |
Menulis rekaman log ke FileRecordSequence, menggunakan ruang yang sebelumnya dipesan dalam urutan. Metode ini tidak dapat diwariskan. |
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions) |
Menulis catatan log ke FileRecordSequence. Metode ini tidak dapat diwariskan. |
Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection) |
Menulis rekaman log ke FileRecordSequence, menggunakan ruang yang sebelumnya dipesan dalam urutan. Metode ini tidak dapat diwariskan. |
BeginAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, AsyncCallback, Object) |
Memulai operasi penamangan asinkron. Metode ini tidak dapat diwariskan. |
BeginAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, AsyncCallback, Object) |
Memulai operasi penautan asinkron menggunakan ruang yang sebelumnya dicadangkan dalam urutan. Metode ini tidak dapat diwariskan. |
BeginAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, AsyncCallback, Object) |
Memulai operasi penamangan asinkron. Metode ini tidak dapat diwariskan. |
BeginAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, AsyncCallback, Object) |
Memulai operasi penautan asinkron menggunakan ruang yang sebelumnya dicadangkan dalam urutan. Metode ini tidak dapat diwariskan. |
BeginFlush(SequenceNumber, AsyncCallback, Object) |
Memulai operasi flush asinkron, menggunakan ruang yang sebelumnya dicadangkan dalam urutan. Metode ini tidak dapat diwariskan. |
BeginReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object) |
Memulai operasi pencadangan dan penamangan asinkron. Metode ini tidak dapat diwariskan. |
BeginReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object) |
Memulai operasi pencadangan dan penamangan asinkron. Metode ini tidak dapat diwariskan. |
BeginWriteRestartArea(ArraySegment<Byte>, SequenceNumber, ReservationCollection, AsyncCallback, Object) |
Memulai operasi penulisan area hidupkan ulang asinkron, menggunakan ruang yang sebelumnya dicadangkan dalam urutan. Metode ini tidak dapat diwariskan. |
BeginWriteRestartArea(IList<ArraySegment<Byte>>, SequenceNumber, ReservationCollection, AsyncCallback, Object) |
Memulai operasi penulisan area hidupkan ulang asinkron, menggunakan ruang yang sebelumnya dicadangkan dalam urutan. Metode ini tidak dapat diwariskan. |
CreateReservationCollection() |
Membuat baru ReservationCollection. Metode ini tidak dapat diwariskan. |
Dispose() |
Segera merilis sumber daya tidak terkelola yang digunakan oleh objek. |
EndAppend(IAsyncResult) |
Mengakhiri operasi penamangan asinkron. Metode ini tidak dapat diwariskan. |
EndFlush(IAsyncResult) |
Mengakhiri operasi flush asinkron. Metode ini tidak dapat diwariskan. |
EndReserveAndAppend(IAsyncResult) |
Mengakhiri operasi pencadangan dan penamangan asinkron. Metode ini tidak dapat diwariskan. |
EndWriteRestartArea(IAsyncResult) |
Mengakhiri operasi penulisan area hidupkan ulang asinkron. Metode ini tidak dapat diwariskan. |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
Flush() |
Memastikan bahwa semua catatan yang ditambahkan telah ditulis. Metode ini tidak dapat diwariskan. |
Flush(SequenceNumber) |
Memastikan bahwa semua catatan yang ditambahkan telah ditulis. Metode ini tidak dapat diwariskan. |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetType() |
Mendapatkan dari instans Type saat ini. (Diperoleh dari Object) |
MemberwiseClone() |
Membuat salinan dangkal dari saat ini Object. (Diperoleh dari Object) |
ReadLogRecords(SequenceNumber, LogRecordEnumeratorType) |
Mengembalikan kumpulan rekaman yang dapat dijumlahkan secara berurutan. Metode ini tidak dapat diwariskan. |
ReadRestartAreas() |
Mengembalikan kumpulan area hidupkan ulang yang dapat dijumlahkan dalam urutan. Metode ini tidak dapat diwariskan. |
ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Secara otomatis membuat satu reservasi dan menambahkan catatan ke urutan. Metode ini tidak dapat diwariskan. |
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Secara otomatis membuat satu reservasi dan menambahkan catatan ke urutan. Metode ini tidak dapat diwariskan. |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
WriteRestartArea(ArraySegment<Byte>) |
Menulis area hidupkan ulang ke FileRecordSequence. Metode ini tidak dapat diwariskan. |
WriteRestartArea(ArraySegment<Byte>, SequenceNumber) |
Menulis area hidupkan ulang ke FileRecordSequence. Metode ini tidak dapat diwariskan. |
WriteRestartArea(ArraySegment<Byte>, SequenceNumber, ReservationCollection) |
Menulis area hidupkan ulang ke FileRecordSequence. Metode ini tidak dapat diwariskan. |
WriteRestartArea(IList<ArraySegment<Byte>>) |
Menulis area hidupkan ulang ke FileRecordSequence. Metode ini tidak dapat diwariskan. |
WriteRestartArea(IList<ArraySegment<Byte>>, SequenceNumber) |
Menulis area hidupkan ulang ke FileRecordSequence. Metode ini tidak dapat diwariskan. |
WriteRestartArea(IList<ArraySegment<Byte>>, SequenceNumber, ReservationCollection) |
Menulis area hidupkan ulang ke FileRecordSequence. Metode ini tidak dapat diwariskan. |
Acara
TailPinned |
Terjadi ketika urutan rekaman menentukan bahwa ekor harus dipindahkan ke depan. Metode ini tidak dapat diwariskan. |