Dispatcher.Invoke(Delegate method,params object[] args)
这个方法的第一个参数 Delegate method 是一个委托类型,所以理论上传入一个委托不会出现问题,譬如:
Dispatcher.Invoke(new Action<string>((x) => { Console.WriteLine($"{x}"); }), new object[] { "delegate" });
上面的代码确实没有问题。接下来我们要说的是:
new Action<string>((x) => { Console.WriteLine($"{x}"); }
可以简写为:
((x) => { Console.WriteLine($"{x}"); }
那么 Dispatcher.Invoke 可以写成:
Dispatcher.Invoke(((x) => { Console.WriteLine($"{x}"); }), new object[] { "delegate" });
那么出问题了,系统没有与之相匹配的方法。导致出现该问题的原因是不是写成lambda表达式后,C#编译器没有办法识别出lambda表达所代表的委托类型类型造成的?