public void LoadTest() { Test.Async(async () => { var rwl = new AsyncReaderWriterLock(); var readKeys = new List<IDisposable>(); for (int i = 0; i != 1000; ++i) readKeys.Add(rwl.ReaderLock()); var writeTask = TaskShim.Run(() => { rwl.WriterLock().Dispose(); }); var readTasks = new List<Task>(); for (int i = 0; i != 100; ++i) readTasks.Add(TaskShim.Run(() => rwl.ReaderLock().Dispose())); await TaskShim.Delay(1000); foreach (var readKey in readKeys) readKey.Dispose(); await writeTask; foreach (var readTask in readTasks) await readTask; }); }