private bool AreDownloadsFinished()
    {
        bool downloadsComplete = GetCompletedDownloadsCount() >=
                                 m_RemoteFileMetadata.GetFileFragments().Count;

        return(downloadsComplete);
    }
    /// <summary>
    /// Downloads a file that is fragmented into different URIs
    /// </summary>
    /// <param name="fileMetadata"></param>
    /// <param name="threadCount"></param>
    public void Download(RemoteFileMetadata fileMetadata, int threadCount)
    {
        Reset();
        if (!fileMetadata.IsValid())
        {
            return;
        }

        m_RemoteFileMetadata = fileMetadata;
        SetConnectionCount(fileMetadata.GetFileFragments().Count);
        SetThreadCount(threadCount);

        for (int i = 0; i < mThreadCount; ++i)
        {
            Thread t = new Thread(WorkerThread);
            mThreads.Add(t);
            t.Start();
        }

        mStopwatch.Start();
    }