Диспетчер.BeginInvoke: не удается преобразовать lambda в System.Делегат
Я пытаюсь дозвониться System.Windows.Threading.Dispatcher.BeginInvoke
. Подпись метода такова:
BeginInvoke(Delegate method, params object[] args)
Я пытаюсь передать ему лямбду вместо того, чтобы создавать делегат.
_dispatcher.BeginInvoke((sender) => { DoSomething(); }, new object[] { this } );
Это дает мне ошибку компилятора, сказав, что я
не удается преобразовать лямбда-код в систему.Делегат.
подпись делегата принимает объект в качестве параметра и возвращает void. Моя лямбда соответствует этому, но она не работает. Что я не хватает?
5 ответов
Если вы система отсчета.Окна.Демонстрация.dll из вашего проекта и добавить using System.Windows.Threading
затем вы можете получить доступ к методу расширения, который позволяет использовать синтаксис лямбда.
using System.Windows.Threading;
...
Dispatcher.BeginInvoke(() =>
{
});
мы создаем методы расширения для этого. Е. Г.
public static void BeginInvoke(this Control control, Action action)
=> control.BeginInvoke(action);
теперь мы можем вызвать его из формы:this.BeginInvoke(() => { ... })
.