c# - 调度程序.CurrentDispatcher.Invoke

标签 c# wpf

我在使用以下代码时遇到以下错误: Dispatcher.CurrentDispatcher.Invoke(() => actualServer.SetServerData(serverData)); 无法将 lambda 表达式转换为类型“System.Delegate”,因为它不是委托(delegate)类型

public override void OnApplyTemplate()
    {
        base.OnApplyTemplate();

        var source = new List<ServerProperty>
        {
            new ServerProperty("connectionstring1", "server1"),
            new ServerProperty("connectionstring2", "server2"),
            new ServerProperty("connectionstring3", "server3"),
            new ServerProperty("connectionstring4", "server4"),
        };

        DataContext = source;
        _timer = new Timer((t) =>
        {
            foreach (var serverProperty in source)
            {
                ServerProperty server = serverProperty;
                ThreadPool.QueueUserWorkItem((o) =>
                {
                    var serverData = ServerDataCalculator.GetServerData(server.ConnectionString);
                    var actualServer = (ServerProperty)o;
                    Dispatcher.CurrentDispatcher.Invoke(() => actualServer.SetServerData(serverData));

                }, server);
            }
        }, null, TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(2));
    }

最佳答案

委托(delegate)没有重载。尝试:

Dispatcher.CurrentDispatcher.Invoke(
     new Action(() => actualServer.SetServerData(serverData)));

here Invoke 重载的完整列表

关于c# - 调度程序.CurrentDispatcher.Invoke,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19491735/

相关文章:

c# - 从 ASP.NET MVC 操作中删除样板

单击 WPF TreeView 项

c# - 尽管 namespace 中存在类,但获取 XMLNS 名称未找到错误

c# - 在 C# 中设置 slider 值

c# - 我该如何解决这个错误? - 委托(delegate) 'System.Action<object>' 不接受 0 个参数

c# - 如何在此处应用 C# 中的 "template"或 "skeleton"代码?

c# - 与 Oracle 的多个连接 - 多任务

c# - WPF 由祖传属性触发

WPF - 如何在 ListView 中使用当前选定项更新文本框?使用 MVVM!

wpf - View 和 View 模型变得太大