Хорошо, я думаю, вам, возможно, придется изучить шаблон View Model, чтобы понять, как он должен обрабатывать такие ситуации, но если я правильно понимаю, ответом на ваш вопрос может быть следующая стратегия.
Забудьте о блокировке mainпоток - он не работает, вы вводите элемент ожидания, который отображается, и пока он показан, другие элементы программы, например, недоступны, пока определенное значение, указывающее, что все объекты загружены, не будет истинным, и оно будет вычислено в отдельном потоке.это, в свою очередь, запустит 3 потока и будет блокировать до тех пор, пока не будут загружены все 3.
Или, если вы используете более ясный подход ViewModel, вы вводите свойство, которое будет представлять собой комбинацию всех 3 загруженных элементов, например
* 1006.*
и в методах get для этих FirstLoaded, SecondLoaded и ThirdLoaded вы выполняете асинхронную загрузку коллекций, как только они загружены, вы NotifyPropertyChanged для них и проверяете, нужно ли уведомлять, что AllLoaded также имеет значение true, когда все 3 установлены в true,Как только для AllLoaded установлено значение true, ваши элементы ожидания скрываются, и программные элементы становятся доступными для работы.
Этот подход более MVVM и Silverlightish, но ваш подход также может работать, если вы не выполняете блок в основном потоке SL.