IProducerConsumerCollection.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Collections / Concurrent / IProducerConsumerCollection.cs / 1305376 / IProducerConsumerCollection.cs

                            // ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
// 
// IProducerConsumerCollection.cs 
//
// [....] 
//
// A common interface for all concurrent collections.
//
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 

using System.Collections; 
using System.Collections.Generic; 
using System.Diagnostics;
 
namespace System.Collections.Concurrent
{

    ///  
    /// Defines methods to manipulate thread-safe collections intended for producer/consumer usage.
    ///  
    /// Specifies the type of elements in the collection. 
    /// 
    /// All implementations of this interface must enable all members of this interface 
    /// to be used concurrently from multiple threads.
    /// 
    public interface IProducerConsumerCollection : IEnumerable, ICollection
    { 

        ///  
        /// Copies the elements of the  to 
        /// an
        /// , starting at a specified index. 
        /// 
        /// The one-dimensional  that is the destination of
        /// the elements copied from the .
        /// The array must have zero-based indexing. 
        /// The zero-based index in  at which copying
        /// begins. 
        ///  is a null reference (Nothing in 
        /// Visual Basic).
        ///  is less than 
        /// zero.
        ///  is equal to or greater than the
        /// length of the 
        /// -or- The number of elements in the source  is greater than the 
        /// available space from  to the end of the destination . 
        ///  
        void CopyTo(T[] array, int index);
 
        /// 
        /// Attempts to add an object to the .
        ///  
        /// The object to add to the . 
        /// true if the object was added successfully; otherwise, false. 
        /// The  was invalid for this collection.
        bool TryAdd(T item); 

        /// 
        /// Attempts to remove and return an object from the .
        ///  
        /// 
        /// When this method returns, if the object was removed and returned successfully,  contains the removed object. If no object was available to be removed, the value is 
        /// unspecified.
        ///  
        /// true if an object was removed and returned successfully; otherwise, false.
        bool TryTake(out T item);

        ///  
        /// Copies the elements contained in the  to a new array.
        ///  
        /// A new array containing the elements copied from the . 
        T[] ToArray();
 
    }


    ///  
    /// A debugger view of the IProducerConsumerCollection that makes it simple to browse the
    /// collection's contents at a point in time. 
    ///  
    /// The type of elements stored within.
    internal sealed class SystemCollectionsConcurrent_ProducerConsumerCollectionDebugView 
    {
        private IProducerConsumerCollection m_collection; // The collection being viewed.

        ///  
        /// Constructs a new debugger view object for the provided collection object.
        ///  
        /// A collection to browse in the debugger. 
        public SystemCollectionsConcurrent_ProducerConsumerCollectionDebugView(IProducerConsumerCollection collection)
        { 
            if (collection == null)
            {
                throw new ArgumentNullException("collection");
            } 

            m_collection = collection; 
        } 

        ///  
        /// Returns a snapshot of the underlying collection's elements.
        /// 
        [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
        public T[] Items 
        {
            get { return m_collection.ToArray(); } 
        } 

    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
// 
// IProducerConsumerCollection.cs 
//
// [....] 
//
// A common interface for all concurrent collections.
//
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 

using System.Collections; 
using System.Collections.Generic; 
using System.Diagnostics;
 
namespace System.Collections.Concurrent
{

    ///  
    /// Defines methods to manipulate thread-safe collections intended for producer/consumer usage.
    ///  
    /// Specifies the type of elements in the collection. 
    /// 
    /// All implementations of this interface must enable all members of this interface 
    /// to be used concurrently from multiple threads.
    /// 
    public interface IProducerConsumerCollection : IEnumerable, ICollection
    { 

        ///  
        /// Copies the elements of the  to 
        /// an
        /// , starting at a specified index. 
        /// 
        /// The one-dimensional  that is the destination of
        /// the elements copied from the .
        /// The array must have zero-based indexing. 
        /// The zero-based index in  at which copying
        /// begins. 
        ///  is a null reference (Nothing in 
        /// Visual Basic).
        ///  is less than 
        /// zero.
        ///  is equal to or greater than the
        /// length of the 
        /// -or- The number of elements in the source  is greater than the 
        /// available space from  to the end of the destination . 
        ///  
        void CopyTo(T[] array, int index);
 
        /// 
        /// Attempts to add an object to the .
        ///  
        /// The object to add to the . 
        /// true if the object was added successfully; otherwise, false. 
        /// The  was invalid for this collection.
        bool TryAdd(T item); 

        /// 
        /// Attempts to remove and return an object from the .
        ///  
        /// 
        /// When this method returns, if the object was removed and returned successfully,  contains the removed object. If no object was available to be removed, the value is 
        /// unspecified.
        ///  
        /// true if an object was removed and returned successfully; otherwise, false.
        bool TryTake(out T item);

        ///  
        /// Copies the elements contained in the  to a new array.
        ///  
        /// A new array containing the elements copied from the . 
        T[] ToArray();
 
    }


    ///  
    /// A debugger view of the IProducerConsumerCollection that makes it simple to browse the
    /// collection's contents at a point in time. 
    ///  
    /// The type of elements stored within.
    internal sealed class SystemCollectionsConcurrent_ProducerConsumerCollectionDebugView 
    {
        private IProducerConsumerCollection m_collection; // The collection being viewed.

        ///  
        /// Constructs a new debugger view object for the provided collection object.
        ///  
        /// A collection to browse in the debugger. 
        public SystemCollectionsConcurrent_ProducerConsumerCollectionDebugView(IProducerConsumerCollection collection)
        { 
            if (collection == null)
            {
                throw new ArgumentNullException("collection");
            } 

            m_collection = collection; 
        } 

        ///  
        /// Returns a snapshot of the underlying collection's elements.
        /// 
        [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
        public T[] Items 
        {
            get { return m_collection.ToArray(); } 
        } 

    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK