Скопировать общий поток без изменения положения
Я хава 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...
}
}
}