IRecordSequence.ReadLogRecords 메서드

정의

파생 클래스에서 재정의되는 경우 시퀀스에 있는 레코드의 열거 가능한 컬렉션을 반환합니다.

public:
 System::Collections::Generic::IEnumerable<System::IO::Log::LogRecord ^> ^ ReadLogRecords(System::IO::Log::SequenceNumber start, System::IO::Log::LogRecordEnumeratorType logRecordEnum);
public System.Collections.Generic.IEnumerable<System.IO.Log.LogRecord> ReadLogRecords (System.IO.Log.SequenceNumber start, System.IO.Log.LogRecordEnumeratorType logRecordEnum);
abstract member ReadLogRecords : System.IO.Log.SequenceNumber * System.IO.Log.LogRecordEnumeratorType -> seq<System.IO.Log.LogRecord>
Public Function ReadLogRecords (start As SequenceNumber, logRecordEnum As LogRecordEnumeratorType) As IEnumerable(Of LogRecord)

매개 변수

start
SequenceNumber

읽기가 시작되는 첫 번째 레코드의 시퀀스 번호입니다.

logRecordEnum
LogRecordEnumeratorType

LogRecordEnumeratorType에서 레코드를 읽는 방식(즉 앞으로 또는 뒤로)을 지정하는 유효한 LogRecordSequence 값입니다.

반환

시퀀스에 있는 레코드의 열거 가능한 컬렉션입니다.

예외

하나 이상의 인수가 잘못된 경우

레코드를 읽는 동안 I/O 오류가 발생한 경우

시퀀스가 삭제된 후 메서드가 호출된 경우

예제

이 샘플에서는 메서드의 사용을 보여 줍니다 ReadLogRecords .

using System;  
 using System.IO;  
 using System.IO.Log;  

 class ReadRecordsSample  
 {  
     static SequenceNumber AppendRecord(IRecordSequence sequence,  
                                        string message,  
                                        SequenceNumber user,  
                                        SequenceNumber previous)  
     {  
         MemoryStream data = new MemoryStream();  
         BinaryWriter writer = new BinaryWriter(data);  
         writer.Write(message);  

         ArraySegment<byte>[] segments;  
         segments = new ArraySegment<byte>[1];  
         segments[0] = new ArraySegment(data.GetBuffer(),  
                                        0,  
                                        Data.Length);  

         return sequence.Append(segments,  
                                user,  
                                previous,  
                                WriteFlags.None);  
     }  

     public static void Main(string[] args)  
     {  
         IRecordSequence sequence;  
         sequence = new FileIRecordSequence(args[0]);  

         SequenceNumber a, b, c, d;  

         a = AppendRecord(sequence,  
                          "This is record A",  
                          SequenceNumber.Invalid,  
                          SequenceNumber.Invalid);  
         Console.WriteLine($"Record A has sequence number {a}");  

         b = AppendRecord(sequence,  
                          "This is record B",  
                          a,  
                          a);  
         Console.WriteLine($"Record B has sequence number {b}");  

         c = AppendRecord(sequence,  
                          "This is record C",  
                          a,  
                          a);  
         Console.WriteLine($"Record C has sequence number {c}");  

         d = AppendRecord(sequence,  
                          "This is record D",  
                          b,  
                          c);  
         Console.WriteLine($"Record D has sequence number {d}");  

         foreach(LogRecord record in  
                 sequence.ReadLogRecords(a, ReadDirection.Forward))  
         {  
             BinaryReader reader = new BinaryReader(record.Data);  
             Console.WriteLine($"{record.SequenceNumber}: {reader.ReadString()}");  
         }  

         foreach(LogRecord record in  
                 sequence.ReadLogRecords(d, ReadDirection.User))  
         {  
             BinaryReader reader = new BinaryReader(record.Data);  
             Console.WriteLine($"{record.SequenceNumber}: {reader.ReadString()}");  
         }  

         foreach(LogRecord record in  
                 sequence.ReadLogRecords(d, ReadDirection.Previous))  
         {  
             BinaryReader reader = new BinaryReader(record.Data);  
             Console.WriteLine($"{record.SequenceNumber}: {reader.ReadString()}");  
         }  
     }  
       }  

설명

파생 클래스에서 재정의되는 경우 시퀀스에 있는 레코드의 열거 가능한 컬렉션을 반환합니다. 열거된 레코드의 순서는 매개 변수의 logRecordEnum 값에 따라 달라집니다.

적용 대상