/// <summary> /// Waits, at most <paramref name="Timeout"/> milliseconds, until object ready for writing. /// Each successful call to <see cref="TryBeginWrite"/> must be followed by exactly one call to <see cref="EndWrite"/>. /// </summary> /// <param name="Timeout">Timeout, in milliseconds.</param> public async Task <bool> TryBeginWrite(int Timeout) { if (await Semaphores.TryBeginWrite(this.name, Timeout)) { this.isWriting = true; return(true); } else { return(false); } }
/// <summary> /// Waits, at most <paramref name="Timeout"/> milliseconds, until object ready for reading. /// Each successful call to <see cref="TryBeginRead"/> must be followed by exactly one call to <see cref="EndRead"/>. /// </summary> /// <param name="Timeout">Timeout, in milliseconds.</param> public async Task <bool> TryBeginRead(int Timeout) { if (await Semaphores.TryBeginRead(this.name, Timeout)) { this.nrReaders++; return(true); } else { return(false); } }
/// <summary> /// Ends a reading session of the object. /// Must be called once for each call to <see cref="BeginRead"/> or successful call to <see cref="TryBeginRead(int)"/>. /// </summary> public async Task EndRead() { await Semaphores.EndRead(this.name); this.nrReaders--; }
/// <summary> /// Waits until object ready for reading. /// Each call to <see cref="BeginRead"/> must be followed by exactly one call to <see cref="EndRead"/>. /// </summary> public async Task BeginRead() { await Semaphores.BeginRead(this.name); this.nrReaders++; }
/// <summary> /// Ends a writing session of the object. /// Must be called once for each call to <see cref="BeginWrite"/> or successful call to <see cref="TryBeginWrite(int)"/>. /// </summary> public async Task EndWrite() { await Semaphores.EndWrite(this.name); this.isWriting = false; }
/// <summary> /// Waits until object ready for writing. /// Each call to <see cref="BeginWrite"/> must be followed by exactly one call to <see cref="EndWrite"/>. /// </summary> public async Task BeginWrite() { await Semaphores.BeginWrite(this.name); this.isWriting = true; }