diff --git a/IpcStream.cs b/IpcStream.cs index 729dde1..ae63f8e 100644 --- a/IpcStream.cs +++ b/IpcStream.cs @@ -33,6 +33,7 @@ public class IpcStream : IDisposable private bool _disposed = false; protected bool encrypted = false; + private object _lockObject = new object(); /// /// Constructor @@ -119,16 +120,19 @@ protected async Task ReadBytesAsync() /// byte buffer protected void WriteBytes(byte[] buffer) { - int length = buffer.Length; - if (length > UInt16.MaxValue) - throw new InvalidOperationException("Message is too long"); + lock (_lockObject) + { + int length = buffer.Length; + if (length > UInt16.MaxValue) + throw new InvalidOperationException("Message is too long"); - // write message length - BaseStream.Write(new byte[] { (byte)(length / 256), (byte)(length & 255) }, 0, 2); + // write message length + BaseStream.Write(new byte[] {(byte) (length / 256), (byte) (length % 256)}, 0, 2); - // write message - BaseStream.Write(buffer, 0, length); - BaseStream.Flush(); + // write message + BaseStream.Write(buffer, 0, length); + BaseStream.Flush(); + } } ///