现有一文件TXT格式,文件的数据是表格的形式存储(如:姓名\t 年龄\t 家庭地址)
使用StreamReader.ReadLine()方法每次读取一行数据,如果使用次方法读文件该怎么加进度条。
望高手指点。
谢谢

解决方案 »

  1.   


    void ReadFile()
    {
    ..
    StreamReader.ReadLine();
    ShowProgressBar();
    ...
    }void ShowProgressBar()
    {
    // Update bar UI
    }
      

  2.   

    UI层用的是一个进度条控件,进度条的原理是Backgroudework,里面调用的是逻辑层的方法,方法中包含了StreamReader.ReadLine(); ,楼上的方法可以吗?
      

  3.   


    需要后台处理,前端显示进度?当然可以.
    1. ReadFile方法必须由另外一个线程执行。
    2. ShowProgressBar更新界面时,必须用窗体的BeginInvoke或者Invoke,让界面线程负责更新。
      

  4.   

    接楼上,要考虑窗体的InvokeRequired属性,具体是什么样子忘记了。。
      

  5.   

    使用BackgroundWorker 可以很方便的实现你的效果using System.ComponentModel;public BackgroundWorker backgroundWorker1;1.先运行 
    backgroundWorker1.RunWorkerAsync();2.在操作中定义
    private void doread(BackgroundWorker worker, DoWorkEventArgs e)
    {
    //...自己的代码
    for (int i = 0 ; i <=100;i++)
    {
    //...自己的代码
    int percentComplete = i;// 这里可以根据循环设定 进度条的百分比
    highestPercentageReached = percentComplete;
    worker.ReportProgress(percentComplete);
    //...自己的代码
    }
    }3个事件
    1.
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;
            e.Result = doread(worker, e);
        }2.
    private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
           //progressBar取值
            this.pgbar_Export.Value = e.ProgressPercentage;
        }3.
    private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                MessageBox.Show(e.Error.Message);
            }
            else if (e.Cancelled)
            {
                MessageBox.Show("Canceled");
            }
            else
            {
                // Finally, handle the case where the operation 
                // succeeded.
                this.Close();
            }    }