У меня есть 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...
}
}
}