无法将lambda表达式转换为' System.Delegate'因为它不是wpf中的委托类型

时间:2014-09-11 10:27:16

标签: c# lambda

public void loadtemplist(DataTable dt)
    {
      this.Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle,

          (Delegate) (() => this.loadtemplist1(dt))   //error


          );
    }

public void loadtemplist1(DataTable dt)
    {

-----
-----

}

上面的代码抛出无法将lambda表达式转换为类型' System.Delegate'因为它不是委托类型

2 个答案:

答案 0 :(得分:1)

您无法将匿名方法直接转换为System.Delegate - 您需要先将其包装在Action中。

请改为尝试:

public void loadtemplist(DataTable dt)
{
  this.Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle,

      new Action(() => { this.loadtemplist1(dt); } )
      );
}

答案 1 :(得分:0)

你应该做

this.Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, 
                            new Action(() => this.loadtemplist1(dt)) );

请参阅演示:https://dotnetfiddle.net/nz9xxD