Скопировать общий поток без изменения положения

Я хава Stream который постоянно получает доступ из другого потока. Но я хочу получить доступ к нему на короткое время, чтобы сделать некоторые тяжелые покрасочные работы GPU в UserControl,

Я сейчас пользуюсь Stream.CopyTo метод, чтобы скопировать его в MemoryStream продолжать. Но даже Stream.CopyTo метод занимает слишком много времени, и работа из другого потока на короткое время прерывается.

Вот мой код:

protected override void OnPaint(PaintEventArgs e) {
   if(myGenericStream != null) {
      using(MemoryStream ms = new MemoryStream()) {
         int pos = myGenericStream.Position;

         myGenericStream.CopyTo(ms);

         myGenericStream.Seek(pos, SeekOrigin.Begin); //I have also tried myGenericStream.Position = pos

         ms.Seek(0, SeekOrigin.Begin);
         // Paint work using the new MemoryStream...

      }
   }
}

0 ответов

Другие вопросы по тегам