Синхронное выполнение операций в 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, то это стоит сделать.