2012-11-30 7 views
1

excel 시트에서 SQL 서버 으로 레코드를 업로드해야합니다. devexpress 진행률 막대 에 진행 상황을 표시해야하며 100에서 1을 업로드하는 것과 같은 방식이어야합니다. 완료 될 때까지 증가하십시오.devexpress progress bar performstep 메서드가 보이지 않는다

+1

대신 MarqueeProgressBasrControl을 사용할 것을 제안합니다. progressbar 컨트롤을 사용할 때 행의 양을 알아야합니다. 일부 파일은 클 수 있습니다. –

답변

4

BackgroundWorker을 작성하고 진행을 메인 GUI 스레드로보고하십시오. 그런 다음 BackgroundWorker에서 오는 상태로 진행률 막대 값을 업데이트하십시오.

예를 들어 DevExpress ProgressBar 대신 일반적인 WinForms ProgressBar를 사용하지만 원칙은 동일합니다.

public partial class Progress : Form 
{ 
    readonly BackgroundWorker _worker = new BackgroundWorker(); 

    public Progress() 
    { 
     InitializeComponent(); 

     _worker.WorkerReportsProgress = true; 
     _worker.DoWork += _worker_DoWork; 
     _worker.ProgressChanged += WorkerProgressChanged; 
     _worker.RunWorkerCompleted += WorkerRunWorkerCompleted; 

     _worker.RunWorkerAsync(); 
    } 


    private void _worker_DoWork(object sender, DoWorkEventArgs e) 
    { 
     var worker = sender as BackgroundWorker; 

     // Simulate work (uploading Excel records to SQL Server) 
     for (var i = 1; i <= 100; i++) 
     { 
      if (worker.CancellationPending) 
      { 
       e.Cancel = true; 
       break; 
      } 

      // Upload some data here, Sleep(100) is just an example 
      Thread.Sleep(100); 

      // Calculate current progress and report 
      worker.ReportProgress(i); 
     } 
    } 

    void WorkerProgressChanged(object sender, ProgressChangedEventArgs e) 
    { 
     _progressBar.Value = e.ProgressPercentage; 
    } 

    void WorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
    { 
     _progressBar.Value = 0; 
    } 
} 
관련 문제