c# 线程和progressbar的一个问题

gaoyinrui 2010-10-28 02:31:39
我写了一个读取文本文件的一个功能。

文本中有很多数据。所以在读取的时候我加了一个进度条(progressbar)的控件。

我这个功能是加在我我们的系统上的。这个系统本山有一个线程。当我执行读取的时候 我的这个功能就会把系统的主线程占了。 系统的就不能操作了。。。所以我要给我的这个读取文本的功能开一个线程。

程序大概是这样的


// 开始读取按钮
private void btnStart_Click(object sender, EventArgs e)
{
System.Threading.Thread t = new System.Threading.Thread(new ThreadStart(WriteDB));
t.Start();
}

// 读取操作
private void WriteDB()
{
string wwpFolderPath = @"C:\Documents and Settings\Administrator\桌面\Placenames\乡镇街道\test.wwp";
string[] onePathList = Directory.GetFiles(wwpFolderPath, "*.wwp", SearchOption.TopDirectoryOnly);

BufferedStream dataFileStream = new BufferedStream(File.Open(onePathList[a].ToString(),FileMode.Open,FileAccess.Read, FileShare.Read));
BinaryReader dataFileReader = new BinaryReader(dataFileStream, System.Text.Encoding.GetEncoding("GB2312"));
m_numberPlacenames = dataFileReader.ReadInt32();
progressBar1.Value = 0;
progressBar1.Maximum = m_numberPlacenames;
for (int i = 0; i < m_numberPlacenames; i++)
{
pName = dataFileReader.ReadString();
pLat = dataFileReader.ReadSingle();
pLon = dataFileReader.ReadSingle();
progressBar1.PerformStep();
}
}


这样的话就有个问题。这个进度条走的特别慢。不用线程的话就很正常。。后来我发现如果把ressBar1.PerformStep();这句话注掉叶很正常。这个是怎么回事。。谁知道。谢谢
...全文
106 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaoyinrui 2010-10-29
  • 打赏
  • 举报
回复
没人做过吗?

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧