c# - 无法将 lambda 表达式转换为类型 'System.Delegate'

标签 c# multithreading dispatcher

这些都不起作用:

_uiDispatcher.Invoke(() => { });
_uiDispatcher.Invoke(delegate() { });

我想要做的就是在我的主 UI 线程上调用一个内联方法。所以我在主线程上调用了这个:

_uiDispatcher = Dispatcher.CurrentDispatcher;

现在我想从另一个线程在该线程上执行一些代码。我该怎么做?我使用了错误的语法吗?

请注意,这不是 WPF 应用程序;我引用了 WindowsBase,所以我可以访问 Dispatcher 类。

最佳答案

问题是您没有提供要调用的委托(delegate)的确切类型Dispatcher.Invoke只需要 Delegate .是Action<T>吗? ?如果是这样,什么是 T ?是MethodInvoker吗? Action ?什么?

如果您的委托(delegate)不接受任何参数且不返回任何内容,您可以使用 ActionMethodInvoker .试试这个:

_uiDispatcher.Invoke(new Action(() => { }));

关于c# - 无法将 lambda 表达式转换为类型 'System.Delegate',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9549358/

相关文章:

C# Plaid Webhook 如何解码

c# - 在编译时不知道目标类型的情况下设置属性

从主线程中删除 C++ 多线程纹理加载器工作项

c# - 将新的 Dispatcher 绑定(bind)到 WPF 中的线程

javascript - Viewbag For Dropdown For - 一旦操作具有参数,就会删除选定的属性

c# - 如何在C#中设置每个屏幕的表单分辨率?

java - 示例多线程程序

c# - 在 BackGroundWorker 中运行方法并显示 ProgressBar

scala - 提升 Web 框架 DRY 调度

.net - 在带有和不带有SP1的Windows 7中,为什么在WPF中得到不同的线程行为?