を形成しますxmlファイルのxml属性を4GBまで大きく変更する背景労働者は、私は、次の星座を持つアプリケーション
この小さなアプリケーションは機能しますが、UIが応答しなくなり、凍結してしまいます。このプロセスの継続時間を短縮したいと考えています
I st技術BtnClickイベントから私のxmlread /ライト方式の呼び出し:私はProgram.csが、そこ私のメインメソッド(changeElements)の私のシングルトンインスタンスを使用して呼に
void BtnApplyChangesClick(object sender, EventArgs e)
{
Program p = Program.Instance;
pbApplyChanges.Minimum = 0;
pbApplyChanges.Step = 1;
Cursor.Current = Cursors.WaitCursor;
foreach(DataGridViewRow cr in dataGridView2.Rows)
{
pbApplyChanges.Maximum = dataGridView2.Rows.Count;
p.changeElements(cr.Cells["Filename"].Value.ToString(), txtTenant.Text, txtDate.Text, txtEvtId2.Text);
pbApplyChanges.PerformStep();
}
Cursor.Current = Cursors.Arrow;
MessageBox.Show("Job done");
}
は全て取られる4つの文字列のparamsを使用しフォームの情報から! (私はこれがちょっと悪い習慣だと思うけど、今まで働いていたと思う)
私はこのメソッド呼び出しをbackgroundWorker(それ自身がメソッド呼び出しを行った)に置き換えようとしたとき、メソッド呼び出しが私は、BWスレッドからUI要素にアクセスすることができないことを知ったので、これも私のメソッド呼び出しが動作しない理由です。
どうすればこの星座を使うことができますか?私はすべての4文字列Paramsと(Program.csの)クラスインスタンスをバックグラウンドワーカーに渡す必要がありますか? BWは仕事に最適なツールですか?
いいえ、クラスとパラメータをグローバルにすることができます。 – Sergio