Преобразовать код BeginInvoke из Winforms в Wpf - PullRequest
1 голос
/ 24 декабря 2011

Я обнаружил, что ISynchronizeInvoke нельзя использовать в WPF после попытки безуспешного преобразования следующего кода. Кто-нибудь может помочь?

private static void EVENT_R(Delegate @event, object[] data)
{
    if (@event != null)
    {
        foreach (var A_C in @event.GetInvocationList())
        {
            var NewTp = (ISynchronizeInvoke)A_C.Target;
            if (NewTp != null && NewTp.InvokeRequired)
            {
                NewTp.BeginInvoke(A_C, data);
            }
            else
            {
                A_C.DynamicInvoke(data);
            }
        }
    }
}

1 Ответ

0 голосов
/ 24 декабря 2011

Если NewTp - UIElement, вам нужно привести к UIElement и вызвать UIElement.Dispatcher.BeginInvoke:

var NewTp = (UIElement)A_C.Target;
if (NewTp != null)
{
    NewTp.Dispatcher.BeginInvoke(A_C, data);
}
...