如何在c#中传递回调?

时间:2011-08-05 06:27:39

标签: c# silverlight

当我从第三方库调用异步函数时,我发现该函数需要传递回调。

功能是

Library.getResult(object options, Action<library.libresult<dataCollection>>  callback

有人可以告诉我如何在Silverlight中将回调传递给此函数。

感谢

2 个答案:

答案 0 :(得分:3)

您使用委托接受结果的方法。例如,您可以使用lambda表达式来创建:

Library.getResult(options, result => {
  // code here runs when the result arrives
});

您还可以声明一个命名方法:

private void HandleResult(library.libresult<dataCollection> result) {
  //...
}

然后在调用中使用它的名字,它会自动为它创建一个委托:

Library.getResult(options, HandleResult);

答案 1 :(得分:2)

Action<library.libresult<dataCollection>>是一种采用library.libresult<dataCollection>的方法,因此以下内容应该有效:

Library.getResult(options, result => {
     // do something with result
});

此处,result将是library.libresult<dataCollection>,它会让您回复。大概(但不是肯定的)这是异步的,所以你可能需要考虑线程问题等。