В Silverlight 4 у меня есть пользовательский класс обслуживания, который имеет асинхронное событие Completed. Внутри события Completed я беру возвращенные данные и вызываю метод заполнения через что-то вроде этого:
private void service_Completed(object sender, CompletedEventArgs args)
{
Dispatcher.BeginInvoke(() => populateInbox(args.Jobs));
}
private void populateInbox(List<JobViewModel> jobs)
{
inbox.DataContext = jobs;
}
BeginInvoke
работает в SL4, однако, когда я перенес его в WPF, я получаю следующую ошибку:
Невозможно преобразовать лямбда-выражение в тип 'System.Delegate', поскольку оно не является типом делегата
Я попытался изменить его на встроенный анонимный параматизированный делегат:
Dispatcher.BeginInvoke(delegate(List<JobViewModel> jobs)
{
inbox.DataContext = jobs;
});
Однако это приводит к той же ошибке во время компиляции.
Есть идеи, как заставить это работать в WPF? Рефакторинг для использования BackgroundWorker
для меня не вариант.