将BeginInvoke作为参数传递

时间:2010-12-01 21:33:28

标签: c# parameters methods

假设我想要一个方法将对象的BeginInvoke方法作为参数传递。我该怎么办?电话看起来像这样:

MyRandomMethod(SomeControl.BeginInvoke);

MyRandomMethod的方法定义是什么?

问题的一部分是BeginInvoke有重载,所以编译器对于我试图将哪一个作为参数传递感到困惑。也许我需要找一种方法来说出我指的是哪个版本的BeginInvoke? (虽然我认为这将由参数类型决定)

1 个答案:

答案 0 :(得分:3)

MyRandomMethod必须有一个带有委托的参数,该委托匹配SomeControl.BeginInvoke的一个重载。例如:

public void MyRandomMethod(Func<Delegate, IAsyncResult> foo)

public void MyRandomMethod(Func<Delegate, object[], IAsyncResult> foo)

(但请不要使用这两个签名重载MyRandomMethod本身,否则你只是要求混淆。)