Вопрос о методе расширения - PullRequest
1 голос
/ 21 декабря 2010

Почему код ниже (.NET-4, метод расширения) не оставляет меня, используя Application.DoEvents();?

/// <summary>
/// Invokes in the Dispatcher an empty action.
/// An thread safe equivalent of the ancient Application.DoEvents.
/// </summary>
public static void DoEvents(this Application a)
{
    Application.Current.Dispatcher.Invoke(
        System.Windows.Threading.DispatcherPriority.Background,
        new Action(delegate { })); 
}

EDIT

обновленная версия после замечания SLaks

    public static void DoEvents(this Application a)
    {
        if (a != null)
        {
            a.Dispatcher.Invoke(
                System.Windows.Threading.DispatcherPriority.Background,
                new Action(delegate { }));
        }
    }

1 Ответ

3 голосов
/ 21 декабря 2010

Вы можете вызывать только методы расширения для экземпляра.

Таким образом, вы сможете написать Application.Current.DoEvents(), поскольку это Application экземпляр.
Однако вы не можете вызвать его нанабери сам.

...