我有以下星座:后台工作
MainForm.cs - >包括所有我的表单元素
的Program.cs - >包含的主要部分,这是一个的XMLReader /作家在xml文件中改变xml属性,可以大到4GB
因此,这个小应用程序的作品,但当然UI得到反应和冻结,我想避免,我也希望减少这个过程的持续时间的方式
I st艺术我xmlread/write方法从BtnClick事件呼叫:
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");
}
在使用我的Program.cs的单一实例,我的存在主要方法(changeElements)的调用使用4字符串参数,可以说都考虑来自Form中的信息! (我想这是有点不好的做法,但它的工作到目前为止......)
当我试图用backgroundWorker替换此方法调用(本身使该方法调用然后)我失败,因为方法调用是不均匀做...我发现UI元素不能从BW线程访问,所以我想这也是我的方法调用不工作的原因?!
那么我怎么才能让这个星座工作?我是否必须将所有4个字符串Params和(Program.cs的)类实例传递给后台工作者? BW甚至是这份工作的最佳工具吗?
不,你可以让class和params全局化。 (当然,如果你不需要多线程) – Sergio