不能将lambdaexpression式转换为types“System.Delegate”
这些都没有工作:
_uiDispatcher.Invoke(() => { }); _uiDispatcher.Invoke(delegate() { });
我想要做的就是在我的主UI线程上调用一个内联方法。 所以我在主线上调用了这个:
_uiDispatcher = Dispatcher.CurrentDispatcher;
现在我想从另一个线程执行该线程上的一些代码。 我该怎么做? 我使用错误的语法?
请注意,这不是一个WPF应用程序; 我引用了WindowsBase
所以我可以访问Dispatcher
类。
问题是你没有提供你想调用的确切types的委托。 Dispatcher.Invoke
只需要一个Delegate
。 这是一个Action<T>
? 如果是这样,什么是T
? 这是一个MethodInvoker
吗? Action
? 什么?
如果你的委托没有参数并且什么也不返回,你可以使用Action
或MethodInvoker
。 尝试这个:
_uiDispatcher.Invoke(new Action(() => { }));
this.Dispatcher.Invoke((Action)(() => { textBox1.Text = "Test 123"; }));
除非我错过了一些东西,所有你告诉我们的是,这不是一个WPF应用程序 。 我不认为调度员是正确的类使用。
如果这是一个WinForm应用程序,则可以通过WindowsFormsSynchronizationContext访问您的UI线程