进度条同步更新问题
主进程有一Button 点击后 工作线程bgThread开始实现文件的复制 剪切 同时前台弹出一新窗口frmProgress内有一ProgressBar用来显示工作线程的进度 
 我现在的实现方法是在frmProgress中使用Thread.Timer通过来判断bgThread.ThreadState  如果非ThreadState.Stop就通过 已复制文件/总文件来同步更新ProgressBar的值   
 我想问下 像这类问题大家一般都是如何实现的
------解决方案--------------------我来帮你一把吧兄弟,我刚才实验了一下,希望能帮到你.还有周末快乐啊.呵呵 
 我的做法是基于流的思想(感觉像废话,先鄙视自己一下先.) 
 需要引入System.IO命名空间 
 //我仅仅是一个例子,你可以根据需要去进行必要的控制.我的是命令控制台的 
 //定义一个文件流,放在当前目录中,名字是demo.pdf 
             FileStream fs = new FileStream(@ "..\..\demo.pdf ", FileMode.Open); 
             BinaryReader br = new BinaryReader(fs); 
             byte[] buffer = new byte[fs.Length]; 
 //解析成二进制流后存储到byte数组中 
             br.Read(buffer, 0, buffer.Length); 
             br.Close(); 
             fs.Close(); 
 //重新定义文件流 
             fs = new FileStream(@ "..\..\kevin.pdf ", FileMode.Create); 
 //下面的仅仅是为了演示.我用的示例文件有20多M,所以数组的长度是21055411 
 //楼主如果想做这个实验,那么下面的a就需要改动一下了. 
 //为了适应一个变化的环境,最好用一个循环来做,比如把进度条分成100个等分,也就是说 
 //每复制了1%,进度条就会向前走一点.不过设置的时候要耐心些,否则很容易算错 
             int max = buffer.Length; 
             Console.WriteLine(max);        
             int a = 10000000; 
             fs.Write(buffer,0,a); 
             Console.WriteLine( "press anykey to continue "); 
             Console.ReadKey(); 
 //这个时候是最容易出错的. 
 //首先,数组是从0下标开始的,所以会发现上面的流写了a这么长,而下面却是从a位置开始写 
 //还有就是要写入的长度,一定是buffer.Length减去前面已经复制的长度 
 //如果要分等分的话,比如分100份,通过除法得出来是每份的长度为b的话,那么b*100肯定是要 
 //不等于源文件大小的,原因很简单,因为除的结果很可能是小数,而我们却把它转换成了整数 
 //解决的办法也很简单就是循环99次 
 //第100次的时候单独写fs.Write(buffer,b*99,buffer.Length-b*99) 
 //应该是没有错的,如果真的算错了,只要LZ耐心些肯定能解决的 
             fs.Write(buffer,a, max-a); 
             fs.Close();