1

アップロード中にExcelシートからSQLサーバーにレコードをアップロードする必要があります。devexpressプログレスバーに進行状況を表示する必要があります。これも100分の1をアップロードするような方法で、完了するまで増分する必要があります。

4

1 に答える 1

4

BackgroundWorkerを作成し、進行状況をメインGUIスレッドに報告します。次に、プログレスバーの値をBackgroundWorkerからのステータスで更新します。

これは例です。DevExpressProgressBarの代わりに一般的なWinFormsProgressBarを使用していますが、原則はまったく同じです。

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;
    }
}
于 2012-12-01T20:32:34.090 に答える