当我的 MainForm 正在做一些与数据库相关的工作时,我想显示一个带有进度条的新表单。我读到您不想将 UI 传递给新线程,所以我想知道解决此问题的最佳解决方案是什么?
我不能在另一个线程上做与数据库相关的工作,因为它使用了十几个对 UI 和 MainForm 的调用。我也不能使用Application.DoEvents()
,因为 MainForm 的线程在一个类中工作,据我所知,你不应该对类的父级进行任何调用。
任何建议,将不胜感激!
编辑
为了澄清我真正想知道的:
我的程序看起来有点像这样:
... Content = DatabaseClass.LoadContent();
ApplyContentToUI(Content);
我想做的是以下几点:
//Show a form here with a progressbar
... Content = DatabaseClass.LoadContent();
ApplyContentToUI(Content);
//Close the form here
但是由于执行 ApplyContentToUI 的时间是 aprox。1秒我决定做以下事情:
//Show a form here with a progressbar
... Content = DatabaseClass.LoadContent();
//Close the form here
ApplyContentToUI(Content);
如果您与我不同,需要在重新加载 UI 时显示进度条,我建议您查看下面的评论和答案。