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); } }); }