async Task Write() { foreach (var frame in queue.GetConsumingEnumerable()) { if (frame == null) { Log.Info("Null frame dequeued"); continue; } Log.Debug("-> {0}", frame); var data = frame.ToBytes().ToArray(); await lockWrite.WaitAsync().ConfigureAwait(false); try { await clientStream.WriteAsync(data, 0, data.Length).ConfigureAwait(false); await clientStream.FlushAsync().ConfigureAwait(false); var stream = await streamManager.Get(frame.StreamIdentifier).ConfigureAwait(false); stream.ProcessSentFrame(frame); } catch (Exception ex) { Log.Warn("Error writing frame: {0}, {1}", frame.StreamIdentifier, ex); } finally { lockWrite.Release(); } } }
void write() { foreach (var frame in queue.GetConsumingEnumerable()) { if (frame == null) { Log.Info("Null frame dequeued"); continue; } Log.Debug("-> {0}", frame); var data = AltLinq.ToArray(frame.ToBytes()); lockWrite.WaitOne(); try { clientStream.Write(data, 0, data.Length); clientStream.Flush(); var stream = streamManager.Get(frame.StreamIdentifier); stream.ProcessSentFrame(frame); } catch (Exception ex) { Log.Warn("Error writing frame: {0}, {1}", frame.StreamIdentifier, ex); } finally { lockWrite.Release(); } } }