1

匿名メソッドを使用してデリゲートを次の場所に渡そうとしていprogressBar.Invoke(Delegate)ます:

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

しかし、次のエラーが発生します。

デリゲート型ではないため、ラムダ式を型'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 に答える