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