Smart Dispatcher – from Background Thread to UI Thread


image

Sometimes your code runs on a background thread, for example, and you need to do something to the UI. But you are on the background thread and can’t affect the UI from there, so what do you do? You use the Dispatcher (or SynchronizationContext class) to help you get back to the UI thread.

Here is a version from John Papa


public class SmartDispatcher
{
    public static void BeginInvoke(Action action)
    {
        if (Deployment.Current.Dispatcher.CheckAccess()
            || DesignerProperties.IsInDesignTool)
        {
            action();
        }
        else
        {
            Deployment.Current.Dispatcher.BeginInvoke(action);
        }
    }
}

Usage:

SmartDispatcher.BeginInvoke(() =>
{
    IsBusy = false;
    Widgets = widgetsResponseSet;
});

For a more completed version which integrate with the a PropertyChanged base class check out Jeff Wilcox’s implementation here

Advertisements

3 thoughts on “Smart Dispatcher – from Background Thread to UI Thread

  1. Посмотрите на досуге возможно вы захотите себе его купить. А также: сборные дома по финской технологии, быстровозводимые дома в ростове, проекты деревянных домов бесплатно в украине.

  2. О любви много рассказано в нашем ярком мире. Однако любовь в искусстве кино – проявление того настоящего чувствах, о котором рассуждают люди разных полов и возрастов. Действительно, порой увидишь новое кино на большом экране и начинаешь думать есть ли любовь на самом деле…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s