Как выполнить асинхронный вызов перед загрузкой приложения Silverlight - PullRequest
1 голос
/ 01 декабря 2011

У меня есть приложение silverlight, которое использует WCF, и я хотел бы сделать вызов WCF для загрузки некоторых данных перед загрузкой usercontrol, чтобы я мог использовать данные с autocompletebox.Любые предложения о том, как это сделать?

Ответы [ 3 ]

1 голос
/ 01 декабря 2011

Не уверен, что ваш пользовательский интерфейс подойдет для использования индикатора загрузки или индикатора выполнения.Если вы можете использовать индикатор загрузки, то это может быть хорошим вариантом для отображения индикатора занятости / загрузки, когда выполняется асинхронный вызов.Это не позволит пользователю щелкнуть раскрывающийся список или любой другой элемент управления во время извлечения данных из службы WCF.

0 голосов
/ 01 декабря 2011

Все вызовы службы WCF в Silverlight являются асинхронными.Я научился использовать Lambdas и очень полезный класс под названием Action (который является оберткой для события и делегата).Использование запуска приложения, как предложил РобСиклос, отлично подойдет для его получения, прежде чем показывать элемент управления.Здесь показан код, который также может работать внутри загруженного события userControl, включая наложение загрузки (вы можете использовать границу с центрированным текстом, проходящим через все приложение, или элемент управления Silverlight).Такой подход обеспечит более немедленную обратную связь с пользователем, особенно если ваш вызов службы данных займет больше времени.

public MyUserControl : UserControl
{

 public MyUserControl()
 {
  this.Loaded += new RoutedEventHandler(View_Loaded);
 }

 void View_Loaded(object sender, RoutedEventArgs e)
 {
  // start showing loading overlay
  MyService service = new Service(...);
  service.GetDataCompleted += (o, args) =>
  {
    var data = args.Results;
    // hide loading overlay
  }
 }
}
0 голосов
/ 01 декабря 2011

Вы можете выполнить асинхронный вызов в методе Application_Startup() вашего App.xaml.cs файла и установить RootVisual в асинхронном обратном вызове вместо Application_Startup().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...