public bool TryGet([NotNullWhen(true)] out BoundedOwner <T>?owner) { LinkedListNode <T>?node; lock (_lock) { var freeList = _freeList; if (freeList.Count == 0) { node = null; } else { node = _freeList.First; if (node != null) { _freeList.Remove(node); } } } if (node == null) { owner = null; return(false); } else { owner = new BoundedOwner <T>(this, node); return(true); } }
public void Send(BoundedOwner <T> owner) { if (!_writer.TryWrite(owner)) { owner.Dispose(); Console.WriteLine("Failed to write to channel - dropping"); } }