因为我有一个工具需要在一点上做很多工作,所以我想在工作时用一些文本和一个进度条显示一个窗口。在工作时显示带进度条的窗口
我的问题是,由于工作量巨大,窗口永远不会被绘制或更新。
我知道我通常应该使用额外的线程进行工作,但是我必须使用2个集合以及当前线程中的数据库服务。
当前的代码是一样的东西
StatusWindow SW = new StatusWindow();
StatusViewModel SVM = new StatusViewModel();
SVM.MaxNum = BigNumber;
SW.Show();
for (int i=0; i<BigNumber; i++)
{
List<AType> ItemsToCreate = Func1();
List<AType> ItemsToDelete = Func2();
foreach (AType cItem in ItemsToCreate)
DB.CreateItem(cItem);
foreach (AType cItem in ItemsToDelete)
DB:DeleteItem(cItem);
SVM.CurrentNum = i;
}
SW.Close();
我也读到了调度员,但我不认为这是在这种情况下非常有用,因为会有主线程太大出入。
有什么建议吗?
谢谢
请给我一个简短的例子,说明如何将它们传递给新线程? – Marks 2010-09-30 13:17:58
我编辑了我的答案一点。 – testalino 2010-09-30 13:24:58