Пример #1
0
 public override void Parse()
 {
     try
     {
         Open();
         FirstPassParse();
         foreach (var p in parsers)
         {
             p.globaTempos = globalTempos;
             p.PrepareForSecondPass();
         }
         SecondPassParse();
         MidiLength = parsers.Select(p => p.trackSeconds).Max();
         foreach (var p in parsers)
         {
             p.Dispose();
         }
         parsers         = null;
         globalTempos    = null;
         trackBeginnings = null;
         trackLengths    = null;
         MidiFileReader.Dispose();
         MidiFileReader = null;
         GC.Collect();
         cancel.ThrowIfCancellationRequested();
         LastColorEvent = new int[trackcount * 16];
         SetColors();
         ParseFinishedInvoke();
     }
     catch (OperationCanceledException)
     {
         MidiFileReader.Close();
         MidiFileReader.Dispose();
         ParseCancelledInvoke();
     }
 }