void DownLoadThread()
        {
            System.Diagnostics.Debug.WriteLine("Thread:" + Thread.CurrentThread.ManagedThreadId + " Start");
            while (mChaptersDownloadQueue.Count > 0)
            {
                ChapterDownloadContext context = null;
                lock (mChaptersDownloadQueue) {
                    context = mChaptersDownloadQueue.Dequeue();
                }

                // 每个源尝试下载3次
                foreach (var link in context.links)
                {
                    for (int i = 0; i < 3; i++)
                    {
                        System.Diagnostics.Debug.WriteLine("Thread:" + Thread.CurrentThread.ManagedThreadId + " " + context.title + " " + link);
                        try
                        {
                            context.content = LibZhuiShu.getChapter(link).body;
                            break;
                        }
                        catch (Exception ex)
                        {
                            loglibrary.LogHelper.Error(ex); loglibrary.LogHelper.Flush();
                        }
                    }

                    if (!string.IsNullOrEmpty(context.content))
                    {
                        break;
                    }
                }

                if (!string.IsNullOrEmpty(context.content))
                {
                    System.Diagnostics.Debug.WriteLine("Thread:" + Thread.CurrentThread.ManagedThreadId + " complate " + context.title);
                    lock (_lock_obj)
                    {
                        mChaptersDownloadComplteCount++;
                    }
                }
                else
                {
                    // 下载失败
                    OnFail();
                    return;
                }
            }
            System.Diagnostics.Debug.WriteLine("Thread:" + Thread.CurrentThread.ManagedThreadId + " Quit");
        }
        /// <summary>
        /// 开始下载
        /// </summary>
        public void StartDownload()
        {
            // 获得章节列表和所有书源
            var mixTocInfo = LibZhuiShu.getMixToc(mBookID);
            // 获得所有书源
            var tocs = LibZhuiShu.getTocSummary(mBookID);
            List <TocChaperListInfo> tocChaperListInfoList = new List <TocChaperListInfo>();

            foreach (var toc in tocs)
            {
                if (toc.name == "优质书源")
                {
                    continue;
                }
                var tocChaperList = LibZhuiShu.getChaperList(toc._id);
                tocChaperListInfoList.Add(tocChaperList);
            }
            foreach (var chapter in mixTocInfo.chapters)
            {
                ChapterDownloadContext context = new ChapterDownloadContext()
                {
                    title = chapter.title
                };
                context.links.Add(chapter.link);
                foreach (var tocChaterListInfo in tocChaperListInfoList)
                {
                    foreach (var tocChapter in tocChaterListInfo.chapters)
                    {
                        if (tocChapter.title.Replace(" ", "").ToLower() == context.title.Replace(" ", "").ToLower())
                        {
                            if (!context.links.Contains(tocChapter.link))
                            {
                                context.links.Add(tocChapter.link);
                            }
                            break;
                        }
                    }
                }
                mChapters.Add(context);
                mChaptersDownloadQueue.Enqueue(context);
            }

            for (int i = 0; i < 10; i++)
            {
                Thread workThread = new Thread(DownLoadThread);
                mWorkThreads.Add(workThread);
                workThread.Start();
            }
        }