我正在尝试使用匿名方法将委托传递到progressBar.Invoke(Delegate)
:
progressBar.Invoke(() => progressBar.Value = count);
但是我收到以下错误:
无法将lambda表达式转换为'System.Delegate'类型,因为它不是委托类型。
有人可以解释一下我做错了吗?
答案 0 :(得分:8)
该方法采用Delegate,而不是Action。因此,当你这样做时:
() => { .. }
它不知道你想要什么代表。这样做:
progressBar.Invoke(new Action(() => progressBar.Value = count));
答案 1 :(得分:3)
Invoke
不接受特定类型的委托,它需要Delegate
(意味着它可以接受任何具有任何签名的委托)。您需要传递特定类型的委托(您选择哪一个并不重要):
progressBar.Invoke(new Action(() => progressBar.Value = count));