1

我正在尝试使用匿名方法将委托传递给progressBar.Invoke(Delegate)

progressBar.Invoke(() => progressBar.Value = count);

但我收到以下错误:

无法将 lambda 表达式转换为类型“System.Delegate”,因为它不是委托类型。

有人可以解释我做错了什么吗?

4

2 回答 2

8

该方法需要一个委托,而不是一个动作。因此,当您这样做时:

() => { .. }

它不知道你想要什么代表。改为这样做:

progressBar.Invoke(new Action(() => progressBar.Value = count));
于 2012-12-06T20:22:15.910 回答
3

Invoke不接受特定类型的委托,它接受一个Delegate(意味着它可以接受任何具有任何签名的委托)。您需要传入特定类型的委托(无论您选择哪一种):

progressBar.Invoke(new Action(() => progressBar.Value = count));
于 2012-12-06T20:22:44.637 回答