Сохранение конфигураций окна в Emacs

Как уже упоминалось здесь , Dispatcher.Invoke может заморозить UI. Вместо этого используйте Dispatcher.BeginInvoke.

Вот удобный класс расширений, который упрощает проверку и вызов диспетчера вызовов.

Пример использования: (вызов из окна WPF)

this Dispatcher.InvokeIfRequired(new Action(() =>
{
    logTextbox.AppendText(message);
    logTextbox.ScrollToEnd();
}));

Класс расширения:

using System;
using System.Windows.Threading;

namespace WpfUtility
{
    public static class DispatcherExtension
    {
        public static void InvokeIfRequired(this Dispatcher dispatcher, Action action)
        {
            if (dispatcher == null)
            {
                return;
            }
            if (!dispatcher.CheckAccess())
            {
                dispatcher.BeginInvoke(action, DispatcherPriority.ContextIdle);
                return;
            }
            action();
        }
    }
}

18
задан dnolen 24 December 2008 в 22:58
поделиться