public void TestBlocking() { int rc = 0; var s = new UnbufferedMemoryStream.UnbufferedMemoryStream(); var t1 = Task.Run(() => { s.ReadByte(); if (Interlocked.Increment(ref rc) != 2) { Assert.Fail(); } }); var t2 = Task.Run(async() => { await Task.Delay(100); s.WriteByte(10); if (Interlocked.Increment(ref rc) != 1) { Assert.Fail(); } }); Task.WaitAll(t1, t2); s.Dispose(); }