public CrawlerQueueEntry Pop() { return AspectF.Define. WriteLock(m_QueueLock). Return(() => { string fileName = m_Store.GetFileNames(Path.Combine(WorkFolderPath, "*")).FirstOrDefault(); if (fileName.IsNullOrEmpty()) { return null; } string path = Path.Combine(WorkFolderPath, fileName); try { using (IsolatedStorageFileStream isoFile = new IsolatedStorageFileStream(path, FileMode.Open, m_Store)) { return isoFile.FromBinary<CrawlerQueueEntry>(); } } finally { m_Store.DeleteFile(path); Interlocked.Decrement(ref m_Count); } }); }