データをデータベースに保存する必要があるWindowsアプリケーションがあり、データロードクリスタルレポートを保存してレポートを表示すると、すべて保存ボタンをクリックすると発生します。
このデータをクリックすると名前が付けられたボタンbtn_Submit
が保存され、レポートが表示されますが、保存には時間がかかるため、データが処理中であることをユーザーに知らせるために、その間にプログレスバーを表示したいと考えています.このWindowsアプリケーションでできること.
私はこのリンクhttp://www.codeproject.com/Tips/83317/BackgroundWorker-and-ProgressBar-demoを調べまし たが、私が望むものを正確に取得できません。
バックグラウンドワーカーは知っていますが、使用したことはありません。
上記のリンクに示されているように、バックグラウンドワーカーと進行状況バーを使用しましたが、進行状況バーは開始するとまったく停止しません。
誰でも私を助けることができますか?シナリオを示す例またはリンクを与えることができますか?.
このコードは Dowork(); に追加しました。
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
PrintData arg = (PrintData)e.Argument;
SalesMaster sm = arg.SalesData;
BrokerMaster bm = arg.Broker;
CustomerMaster ctm = arg.Customer;
CompanyMaster cm = arg.Company;
ArrayList hb = arg.Arrardata;
int totunit = arg.totunit;
decimal globalamt = arg.golbamt;
SalesReport sreport = new SalesReport(sm, ctm, cm, bm, hb, totunit, glb_totalamt);
sreport .MdiParent = arg.parentf;
sreport .WindowState = FormWindowState.Maximized;
sreport .Show();
}
この行でエラーが発生します sreport .MdiParent = arg.parentf;
このエラー:
Cross-thread operation not valid: Control 'frmParent' accessed from a thread other than the thread it was created on.
ここで何をすべきですか?