I also tried BackgroundWorker concept Loading animation is working here, but it is not allowing to load the usercontrols and giving an error.
这是设计,你不允许触摸后台线程中的UI端的任何东西,因为它不会是STA。相反,将进度指示器绑定到线程可以修改的属性,然后进度指示器将通过INotifyPropertyChanged事件获取更新。
例如,如果你有一个ProgressBar
势必ProgressPercentage
,或不确定的繁忙指示符势必IsBusy
:
在XAML
:
<ProgressBar x:Name="StatusBar"
Maximum="1" Value="{Binding ProgressPercentage}" />
在Code
:
using (var backgroundWorker = new BackgroundWorker())
{
backgroundWorker.DoWork += (s, ex) =>
{
IsBusy = true;
StatusText = "Pretending to do something...";
for (int i = 0; i < 100; i++)
{
ProgressPercentage = (i + 1)/100.0D;
Thread.Sleep(100);
}
};
backgroundWorker.RunWorkerCompleted += (s, ex) =>
{
IsBusy = false;
StatusText = "Export Complete.";
};
backgroundWorker.RunWorkerAsync();
}
的后台线程将完成它的工作,UI线程在等待时不会阻塞,并且你的进度指向icator会随着更新而更新。
你在使用依赖注入吗?您是否使用在启动或程序集本身加载业务数据? – 2013-04-22 15:31:23
是的我在启动时加载数据,但我没有使用任何依赖注入。我从外部文件中检索数据并根据页面加载的数据创建用户控件 – nandu 2013-04-22 15:39:46
LoadSecondPageData中的内容是什么?你可以发布代码吗? – Dilshod 2013-04-22 16:05:43