具体详情请参照这里(太长了,无法发帖只好做个链接,还请见谅)。

解决方案 »

  1.   

    你的代码比较长
    感觉很多地方没注意
    1:尽量不要再线程间公用对象
    private int _currNo = 0;
            public int CurrNo
            {
                get { return _currNo; }
            }
            private List<Thread> _threadList;
            public List<Thread> ThreadList
            {
                get { return _threadList; }
            }
            private List<BlogInfo> _unDownloadBlogInfoList;
            private int _sumDownloadNum;
            public delegate void DownloadProgressChanged(int downloadedCount, string msg);
            public event DownloadProgressChanged DownloadProgressChangedEvent;        private System.Threading.Timer _timer; //线程等待计时器
            private string _backupDirTimeStamp; //备份文件夹时间戳字符串这些变量太多了,而且都没有加保护
      

  2.   

    2:写法不标准
    多线程开发不能用DEBUG模式来解决问题,必须掌握一定的理论知识
    请从基本的开始学起
    http://www.cnblogs.com/xugang/archive/2008/04/06/1138856.html
      

  3.   

    private int _XianC= 0;
      public int XianC
      {
      get { return _XianC; }
      }
      private List<Thread> _thread;
      public List<Thread> thread
      {
      get { return _thread; }
      }  private List<BlogInfo> _unDownloadBlogInfoList;
      private int _sumDownloadNum;
      public delegate void DownloadProgressChanged(int downloadedCount, string msg);
      public event DownloadProgressChanged DownloadProgressChangedEvent;  private System.Threading.Timer _time; //线程等待计时器
      private string _backupDirTimeStamp; //备份文件夹时间戳字符串