[ Windows Phone ] Synchronous Dispatcher.Invoke

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

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *