遍历 Dictionary只能用foreach吧,怎么实现backgroundWorker和Dictionary集合类的多线程,下面代码该如何修改
  private string RetrieveData(BackgroundWorker worker, DoWorkEventArgs e)
        {
            string maxRecords = (string)e.Argument;
            /*int percent = 0;
            for (int i = 1; i <= maxRecords; i++)
            {
                if (worker.CancellationPending)
                {
                    return i;
                }
                percent = (int)(((double)i / (double)maxRecords) * 100);
                 //foreach (KeyValuePair<string, NameWord> a in NanName)
               //{
               //     foreach (KeyValuePair<string, NameWord> b in NanName)
               //     {
                        {
                            percent = (int)(((double)i / (double)maxRecords) * 100);
                            worker.ReportProgress(percent, new KeyValuePair<int, string>(i,a.Value.Name.ToString()));
                                //a.Value.Name.ToString() + b.Value.Name.ToString()));
                      //  }
                 // }
                }*/

解决方案 »

  1.   

    Dictionary用foreach遍历,怎么实现backgroundWorker一行一行读出来
      

  2.   

    看看foreach的原理。
    foreach等价于:            Dictionary<string, string> dic = new Dictionary<string, string>();
                dic.Add("1", "value1");
                dic.Add("2", "value2");
                KeyValuePair<string, string> pair;
                Dictionary<string, string>.Enumerator enumerator = dic.GetEnumerator();
                while (enumerator.MoveNext())
                {
                    pair = enumerator.Current;
                    Console.WriteLine(pair.Value); //or do what you want
                }