在Silverlight 4中,我有一个自定义的服务类,其中包含一个异步的Completed事件。在Completed事件内部,我通过类似这样的方式获取返回的数据并调用一个populate方法:
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时,会出现以下错误:
无法将 lambda 表达式转换为类型“System.Delegate”,因为它不是委托类型
我尝试更改为内联、匿名、带参数的委托:
Dispatcher.BeginInvoke(delegate(List<JobViewModel> jobs)
{
inbox.DataContext = jobs;
});
然而,那会产生相同的编译时错误。
有没有办法在WPF中使其工作?重构以使用BackgroundWorker
对我来说不是一个选项。