在后台工作人员 运行 上关闭 "Loading" 表单已完成
Close "Loading" form on Backgroundworker run completed
我有一个接受用户特定输入的表单。
当用户单击 "OK" 时,我将用户输入的内容插入设置并存储。这个过程是在主窗体中完成的,有点长(大约 15 秒)
所以我在 Background Worker 中做这项工作。
以下是我的代码:
frmProgress progressBar ;
private void SomeMethod()
{
if (frm.ShowDialog(this) == DialogResult.OK)
{
List<Criteria> selectedCriterias = new List<Criteria>(frm.SelectedCriteria);
bool isOverWriteExistingCriteria = frm.IsOverwriteExistingCriteria;
object[] args = new object[] {selectedCriterias, isOverWriteExistingCriteria};
// STart Background worker
backgroundFillCriteria.RunWorkerAsync(args);
// Display my progressForm
progressBar = new frmProgress("Updating Specified Criteria. . .");
if (progressBar != null && !progressBar.IsDisposed)
progressBar.ShowDialog();
}
}
private void backgroundFillCriteria_DoWork(object sender, DoWorkEventArgs e)
{
object[] args = e.Argument as object[];
List<Criteria> scanAlertCriterias = args[0] as List<Criteria>;
bool isOverwriteExistingCriteria = (bool)args[1];
UpdateCriteria(scanCriterias, isOverwriteExistingCriteria);
}
private void (List<Criteria> scanCriterias, bool isOverwriteExistingCriteria)
{
// Does all processing
}
private void backgroundCriteria_RunWorkerCompleted(object sender,RunWorkerCompletedEventArgs e)
{
try
{
if (progressBar != null)
{
progressBar.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + "\n" + ex.StackTrace);
}
}
我的问题是 - 我的条件已更新 - 但应用程序在 Progressform 上挂起。我无法继续
我想我处理它的方式不对!
请帮忙!!
我已经解决了我的问题...我正在更新 datagridview - UI - 来自 backgroundworker 的 mainform 的一部分造成了问题!
我是编码新手,因此犯了这样的错误..
感谢大家的帮助!
我有一个接受用户特定输入的表单。 当用户单击 "OK" 时,我将用户输入的内容插入设置并存储。这个过程是在主窗体中完成的,有点长(大约 15 秒)
所以我在 Background Worker 中做这项工作。
以下是我的代码:
frmProgress progressBar ;
private void SomeMethod()
{
if (frm.ShowDialog(this) == DialogResult.OK)
{
List<Criteria> selectedCriterias = new List<Criteria>(frm.SelectedCriteria);
bool isOverWriteExistingCriteria = frm.IsOverwriteExistingCriteria;
object[] args = new object[] {selectedCriterias, isOverWriteExistingCriteria};
// STart Background worker
backgroundFillCriteria.RunWorkerAsync(args);
// Display my progressForm
progressBar = new frmProgress("Updating Specified Criteria. . .");
if (progressBar != null && !progressBar.IsDisposed)
progressBar.ShowDialog();
}
}
private void backgroundFillCriteria_DoWork(object sender, DoWorkEventArgs e)
{
object[] args = e.Argument as object[];
List<Criteria> scanAlertCriterias = args[0] as List<Criteria>;
bool isOverwriteExistingCriteria = (bool)args[1];
UpdateCriteria(scanCriterias, isOverwriteExistingCriteria);
}
private void (List<Criteria> scanCriterias, bool isOverwriteExistingCriteria)
{
// Does all processing
}
private void backgroundCriteria_RunWorkerCompleted(object sender,RunWorkerCompletedEventArgs e)
{
try
{
if (progressBar != null)
{
progressBar.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + "\n" + ex.StackTrace);
}
}
我的问题是 - 我的条件已更新 - 但应用程序在 Progressform 上挂起。我无法继续
我想我处理它的方式不对!
请帮忙!!
我已经解决了我的问题...我正在更新 datagridview - UI - 来自 backgroundworker 的 mainform 的一部分造成了问题!
我是编码新手,因此犯了这样的错误..
感谢大家的帮助!