2012-02-09 2 views
0

Я запутался со следующим кодом.Как запустить событие с помощью Dispatcher.BeginInvoke в wpf

someObject 
.Dispatcher 
.BeginInvoke(new SomeDelegate(SomeEvent), SomeParamater); 

здесь SomeDelegate является делегатом, SomeEvent является событием класса.

Когда я запускаю код, SomeEvent увольняется, и обработчик события получает элемент управления.

Может кто-нибудь объяснить, как он работает?

+0

Вы прочитали документацию MSDN для [BeginInvoke] (http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.begininvoke.aspx)? – Clemens

+0

@Clemens Я прошел через него, но подпись говорит, что мы можем передать тип делегата, а не событие. – Syed

+0

Как определяется ваш 'SomeDelegate'? – Clemens

ответ

1

Вопрос был: как вызвать событие, определенное в

public event EventHandler<SomeEventArgs> SomeEvent; 

через Dispatcher.BeginInvoke?

Это делается так:

Dispatcher.BeginInvoke(new EventHandler<SomeEventArgs>(SomeEvent), this, new SomeEventArgs()); 

или любое другое значение вместо this в качестве второго аргумента, которым переходит в руки обработчик событий в качестве аргумента sender.