System.Collections.Concurrent.BlockingCollection.Add(SampleCollection)

Here are the examples of the csharp api class System.Collections.Concurrent.BlockingCollection.Add(SampleCollection) taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

1 Example 7

1. Example

Project: PowerShellAudio
Source File: ExtensionMethods.cs
internal static void ReadWriteParallel(this ISampleDecoder decoder, ISampleConsumer consumer, CancellationToken cancelToken, bool samplesAreManuallyFreed)
        {
            Contract.Requires(decoder != null);
            Contract.Requires(consumer != null);

            using (var outputQueue = new BlockingCollection<SampleCollection>(10))
            {
                Task decode = Task.Run(() =>
                {
                    SampleCollection samples;
                    do
                    {
                        cancelToken.ThrowIfCancellationRequested();
                        samples = decoder.DecodeSamples();
                        outputQueue.Add(samples);
                    } while (!samples.IsLast);
                }).ContinueWith(task => outputQueue.CompleteAdding());

                foreach (SampleCollection queuedSamples in outputQueue.GetConsumingEnumerable(cancelToken))
                {
                    consumer.Submit(queuedSamples);
                    if (!samplesAreManuallyFreed)
                        SampleCollectionFactory.Instance.Free(queuedSamples);
                }

                // This will re-throw any decoding exceptions:
                decode.Wait();
            }
        }