EnumerateBlobs() public static method

public static EnumerateBlobs ( Logger log, Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer container, string prefix, bool>.Func condition = null ) : IEnumerable
log Logger
container Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer
prefix string
condition bool>.Func
return IEnumerable
        public override void ExecuteCommand()
        {
            var destClient    = DestinationStorage.CreateCloudBlobClient();
            var destContainer = destClient.GetContainerReference(DestinationContainer);

            // Iterate through the blobs
            int index = 0;
            var blobs = Util.EnumerateBlobs(Log, destContainer, Prefix ?? String.Empty);

            Parallel.ForEach(blobs, new ParallelOptions()
            {
                MaxDegreeOfParallelism = 10
            }, blob =>
            {
                Interlocked.Increment(ref index);
                if (blob.CopyState.Status != CopyStatus.Pending)
                {
                    DateTime start = DateTime.UtcNow;
                    int counter    = 0;
                    while (blob.CopyState.Status == CopyStatus.Pending)
                    {
                        Thread.Sleep(1000);
                        counter++;
                        blob.FetchAttributes();

                        if (counter % 5 == 0)
                        {
                            Log.Info("{1}Waiting on {0} ...", blob.Name, counter > 5 ? "Still " : "");
                        }
                    }
                    if (counter > 2)
                    {
                        Log.Info("Copy of {0} has finished!", blob.Name);
                    }
                }
                index++;
            });

            Log.Info("{0} Copies Complete!", index);
        }