现在我要生成A,B,C,D四个文件,每个文件所需要的时间各不相同,我如何用进度条控制生成的速度,在4个文件都生成好的时候,进度条刚刚100%,是不是要用什么进程去监视啊
解决方案 »
- dropdownlist 的问题
- 我想做一个可以查询局域网内某台机器上的图纸 并查看程序请问怎么做
- 怎么用DataGridview对数据库中的数据进行更新和删除啊
- PDA开发中,vs读取数据库文件sdf是的问题
- 关于windows media player的请高手指点
- 我学C# 现在想买一本数据结构方面的书!
- sql存储过程返回多结果集的后续处理,帮顶有分!!!
- 高分求调用vc的dll参数的方法,包括byte*和double*以及int*,分不够还可以加!
- 苦了一个多月,终于完成了,散分!
- 关于c#开发串口
- 发送电子邮件的程序老是发送不成功,请高手帮忙看看问题所在???
- 如何能将查到符合条件的DataSet保存为一个自定义类型数组呢
当文件生成时,修改进度条的value值。全部生成完成设value值等于最大值即可。
private void Process()
{ String d = "afdfgtklghjoisglierhw 032u4-521u-2ut43p8ty3408y1284hraafdfgtklghjoisglierhw 032u4-521u-2ut43p8ty3408y1284hraafdfgtklghjoisglierhw 032u4-521u-2ut43p8ty3408y1284hraafdfgtklghjoisglierhw 032u4-521u-2ut43p8ty3408y1284hraafdfgtklghjoisglierhw 032u4-521u-2ut43p8ty3408y1284hraafdfgtklghjoisglierhw 032u4-521u-2ut43p8ty3408y1284hra" +
"afdfgtklghjoisglierhw 032u4-521u-2ut43p8ty3408y1284hraafdfgtklghjoisglierhw 032u4-521u-2ut43p8ty3408y1284hraafdfgtklghjoisglierhw 032u4-521u-2ut43p8ty3408y1284hraafdfgtklghjoisglierhw 032u4-521u-2ut43p8ty3408y1284hraafdfgtklghjoisglierhw 032u4-521u-2ut43p8ty3408y1284hraafdfgtklghjoisglierhw 032u4-521u-2ut43p8ty3408y1284hra" +
"ejrt093u40tu30tu0348r-234uy593y394=248390w01-1\\543utp5w9tpfg873429y7otw348934bfsdla;'g4t347892729387`!IOT083848U03503Y8ore809340yt038yt0837uyt043809oasdhf89430t54g45y745te5t34y69098-090=-/uik7i8675674564565457567fr982^&$GBOR*hr3248t6h^&t096th3lthpse90929085u348t6-54tds0s9-093429-5693e0gu9-394-t3-93i4-t6j-k5jidstoproptefsdijf,/{+++"; byte[] b = System.Text.Encoding.UTF8.GetBytes(d + d + d + d + d);
int totalLength = b.Length; progressBar1.Maximum = totalLength*4; //运行4次,乘以四
progressBar1.Value = 0; //第一个文件
StreamWriter bw = new StreamWriter("D:\\aaa.txt");
for (int i = 0; i < totalLength; i++)
{
bw.BaseStream.WriteByte(b[i]);
progressBar1.PerformStep();
}
bw.Close();
//第二个文件
bw = new StreamWriter("D:\\bbb.txt"); for (int i = 0; i < totalLength; i++)
{
bw.BaseStream.WriteByte(b[i]);
progressBar1.PerformStep();
}
bw.Close();
//第三个文件
bw = new StreamWriter("D:\\ccc.txt"); for (int i = 0; i < totalLength; i++)
{
bw.BaseStream.WriteByte(b[i]);
progressBar1.PerformStep();
}
bw.Close();
//第四个文件
bw = new StreamWriter("D:\\ddd.txt"); for (int i = 0; i < totalLength; i++)
{
bw.BaseStream.WriteByte(b[i]);
progressBar1.PerformStep();
}
bw.Close();
}
}根本用不到多线程.
long totalFileSize = 0;
int count = 0;
private void button1_Click(object sender, EventArgs e)
{
List<string> list = new List<string>();
list.Add("log.txt");
list.Add("log2.txt"); foreach (string file in list)
{
if (!File.Exists(file)) continue;
FileInfo info = new FileInfo(file);
totalFileSize += info.Length;
} progressBar1.Maximum = (int)totalFileSize;
progressBar1.Minimum = 0; Thread thread = new Thread(new ParameterizedThreadStart(Foo));
thread.IsBackground = true;
thread.Start(list);
} private void Foo(object state)
{
List<string> list = state as List<string>;
if (list != null)
{
foreach (string file in list)
{
if (!File.Exists(file)) continue;
StreamReader reader = new StreamReader(file);
while (reader.Peek() > -1)
{
MethodInvoker mi = delegate
{
count += Encoding.Default.GetByteCount(reader.ReadToEnd());
progressBar1.Value = count;
};
Invoke(mi);
}
} if (progressBar1.Value == progressBar1.Maximum)
{
MessageBox.Show("OK, it's done...");
}
}
}
生成文件时,用byte数组写 ,一次写多少就把进度条的value+上多少。