111,129
社区成员
发帖
与我相关
我的任务
分享
// 开始读取按钮
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();
}
}
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.Value = (i + 1); //应该这么写吧
//progressBar1.PerformStep();
}
//progressBar1.PerformStep(); 用这个方法的话,要设置Step属性,默认是10,自己改一个值能够循环完了,进度也刚好满
慢的原因可能是Step值太小,循环次数太多
/// <summary>
/// 读取wwp文件写入数据库文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnWrite_Click(object sender, EventArgs e)
{
System.Threading.Thread thread = new Thread(new ThreadStart(StartWriteDB));
thread.IsBackground = true;
thread.Start();
}
public void StartWriteDB()
{
this.onWriteDBProgress += new writeDBProgress(WriteDB_Progress);
OnWriteDB();
}
// 委托
public delegate void writeDBProgress(long total, long current);
// 事件
public event writeDBProgress onWriteDBProgress;
void WriteDB_Progress(long total, long current)
{
if (this.InvokeRequired)
{
this.Invoke(new writeDBProgress(WriteDB_Progress), new object[] { total, current });
}
else
{
this.progressBar.Maximum = (int)total;
this.progressBar.Value = (int)current;
}
}
// 读取操作
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();
for (int i = 0; i < m_numberPlacenames; i++)
{
pName = dataFileReader.ReadString();
pLat = dataFileReader.ReadSingle();
pLon = dataFileReader.ReadSingle();
onWriteDBProgress(placeNamesList.Count, i);
}
}