В 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
для меня не вариант.