Синхронное выполнение операций в UI-потоке через Dispatcher
using System.Windows.Threading; using System.Threading; //... public async Task Invoke(Action a) { DispatcherSynchronizationContext dsc = new DispatcherSynchronizationContext(Deployment.Current.Dispatcher); await Task.Factory.StartNew(() => { dsc.Send(new SendOrPostCallback(delegate { a.Invoke(); }), null); }); }
Использование:
await Invoke(() => { //...SomeOperations });
Если вы ещё не подключили Microsoft.Bcl.Async в WP7, то это стоит сделать.