private bool DoTrackOneFile(TrackDataFrame tdf, string inFile) { if (!File.Exists(inFile)) {// 不存在相当于处理成功 return true; } FileStream inFileStream = null; BinaryReader br = null; try { // 打开输入文件 inFileStream = new FileStream(inFile, FileMode.Open); br = new BinaryReader(inFileStream); nByteFile = (ulong)br.BaseStream.Length; nByteProcessed = 0; bool bret = tdf.TrackFile(br, ref nByteProcessed); // 关闭输入文件 br.Close(); br = null; inFileStream.Close(); inFileStream = null; // 一般表示输出文件无法打开等错误 if (!bret) { tdf.Close(); MessageBox.Show("out error!"); return false; } } catch (ThreadAbortException) { tdf.Close(); if (br != null) { br.Close(); } if (inFileStream != null) { inFileStream.Close(); } return false; } catch (Exception) { ;// continue; } return true; }
private void DoTrack() { TrackDataFrame tdf = new TrackDataFrame(); tdf.OutInfo = this.GetTrackInfo(); nFileProcessed = 0; for (int i = 0; i < this.listBoxInFile.Items.Count; i++) { if (!DoTrackOneFile(tdf, this.listBoxInFile.Items[i].ToString())) { return; } nFileProcessed++; Thread.Sleep(10); } tdf.Close(); MessageBox.Show("well done!"); }