Example #1
0
        private void RestoreMessagesFromDisk()
        {
            // try to populate the colleciton with values from disk, if any
            var now      = DateTime.UtcNow;
            var messages =
                from filename in Directory.GetFiles(_queueRecoveryFolder, "*.delayedqueue").AsParallel()
                let lastModified = File.GetLastAccessTimeUtc(filename)
                                   where now.Subtract(lastModified).TotalMinutes < 60
                                   select new Tuple <string, Task <MailMessage> >(filename, ReadFromFile(filename));

            messages.ForEachAsync(async m =>
            {
                if (await _queue.TryAddAsync(await m.Item2))
                {
                    File.Delete(m.Item1);
                }
            });
        }