Как получить доступ к Dispatcher, если нет ссылки на объекты пользовательского интерфейса и Application.Current.Dispatcher имеет значение null? - PullRequest
1 голос
/ 07 января 2011

Я вызываю это из потока, не являющегося пользовательским интерфейсом (другой поток, чем мои элементы управления WPF):

public static FontFamily GetDefaultFontFamily()
{
    FontFamily fontFamily = null;

    Application.Current.Dispatcher.Invoke(
        new Action(
            delegate
            {
                fontFamily = new TextBlock().FontFamily;
            }));

    return fontFamily;
}

но Application.Current в моем случае null (объекты WPF, размещенные в приложении MFC) ...

Единственное решение - передать в качестве параметра экземпляр DispatcherObject, но это повлечет за собой множество модификаций в других местах и ​​сделает его не чистым решением из вызывающего кода.

Есть идеи?

1 Ответ

1 голос
/ 14 января 2011

Я справился с проблемой, сделав хранилище классов действительной ссылкой на диспетчер при первом использовании класса (также сделал его синглтоном).

Не лучшее решение, но тем не менее хуже...

...