【问题标题】:Passing an anonymous method into ProgressBar.Invoke()将匿名方法传递给 ProgressBar.Invoke()
【发布时间】:2012-11-24 23:14:03
【问题描述】:
我正在尝试使用匿名方法将委托传递给progressBar.Invoke(Delegate):
progressBar.Invoke(() => progressBar.Value = count);
但我收到以下错误:
无法将 lambda 表达式转换为类型“System.Delegate”,因为它不是委托类型。
谁能解释一下我做错了什么?
【问题讨论】:
标签:
c#
.net
winforms
multithreading
invoke
【解决方案1】:
该方法需要一个委托,而不是一个动作。因此,当您这样做时:
() => { .. }
它不知道你想要什么委托。改为这样做:
progressBar.Invoke(new Action(() => progressBar.Value = count));
【解决方案2】:
Invoke 不接受特定类型的委托,它接受Delegate(这意味着它可以接受具有任何签名的任何委托)。您需要传入特定类型的委托(无论您选择哪一种):
progressBar.Invoke(new Action(() => progressBar.Value = count));