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