Пример #1
0
 public override void Reset()
 {
     if (IsDisposed)
     {
         throw new ObjectDisposedException(GetType().Name);
     }
     _runningStatus = 0;
     lock (_lockObject)
     {
         int result = WindowsMultimediaDevice.midiOutReset(Handle);
         if (result != (int)EDeviceException.MmsyserrNoerror)
         {
             OnError(new ErrorEventArgs(new OutputDeviceException(result)));
         }
         while (_bufferCount > 0)
         {
             Monitor.Wait(_lockObject);
         }
     }
 }
Пример #2
0
 protected override void Dispose(bool disposing)
 {
     if (disposing)
     {
         lock (_lockObject)
         {
             Reset();
             int result = WindowsMultimediaDevice.midiOutClose(Handle);
             if (result != (int)EDeviceException.MmsyserrNoerror)
             {
                 OnError(new ErrorEventArgs(new OutputDeviceException(result)));
             }
         }
     }
     else
     {
         WindowsMultimediaDevice.midiOutReset(Handle);
         WindowsMultimediaDevice.midiOutClose(Handle);
     }
     base.Dispose(disposing);
 }