1 使用BackGroundWorker出了个问题,File.WriteAllText方法生成400多字节的文本文件,执行完后(也可能执行过程中) 下一次foreach循环就开始了,而没有及时执行bgw_ProgressChanged事件,等下次执行的过程中,bgw_ProgressChanged才会执行上次循环的进度100,,求大牛们帮帮忙. 2 3 private void bgw_DoWork(object sender, DoWorkEventArgs e) 4 { 5 ..... //耗时操作 6 foreach (KeyValuePair<string, AccModel> acc in dic) 7 { 8 .... 9 value += 20 / acc.Value.AccY_Name.Count; 10 bgw.ReportProgress(value); 11 StringBuilder sb = GetConfig(acc.Value.SavePath, acc.Key, acc.Value); 12 string target = string.Format(@"{0}\{1}\{2}\Act.Lst", acc.Value.SavePath, acc.Key, DateTime.Now.ToString("yyyy-MM-dd").Replace("-", string.Empty)); 13 File.WriteAllText(target, sb.ToString(), Encoding.Default); 14 //上面执行过程中,直接去下次foreach循环了 15 value = 100; 16 bgw.ReportProgress(value); 17 .... 18 } 19 }
执行单步就没问题,用了Thread.Sleep效果也不太好
lock(syncObject)
....
你好 你说的lock是要锁定哪块?