【问题标题】: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));
      

      【讨论】:

        猜你喜欢
        • 2012-12-24
        • 1970-01-01
        • 1970-01-01
        • 2020-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多