public void Dispose()
 {
     lock (this)
     {
         if (m_sample != null)
         {
             m_sample.Dispose();
             m_sample = null;
         }
     }
 }
 public void QueueSample(MediaSample2D sample)
 {
     lock (this)
     {
         if (m_sample == null)
         {
             m_sample = sample;
             Task.Run((Action)DecodeSample);
         }
         else
         {
             sample.Dispose();
             Logger.Events.VideoBarcodeReader_SampleDropped();
         }
     }
 }