2011-07-08 155 views
0

Addressof语法我使用该委托来调用我的梅索德:没有委托

Private Delegate Sub NoArgDelegate() 



Dim dl As New NoArgDelegate(AddressOf MyLoad) 
Me.Dispatcher.BeginInvoke(dl, Windows.Threading.DispatcherPriority.ContextIdle) 


Private Sub MyLoad() 
End Sub 

有没有办法做到这一点没有我NoArgDelegate?

感谢

回答

1

由于您使用WPF中,Action代表应该可用。所以你不需要定义你自己的委托。

+0

谢谢。你能在VB.Net中做一个例子吗?我刚刚发现:http://msdn.microsoft.com/en-us/library/ms591596%28v=vs.85%29.aspx – goldengel

+0

对不起,我想我可能一直在回答你的问题的不同方面。我回答了你的问题,不使用你的'NoArgDelegate'委托。你应该可以使用'Action'来代替它。但是关于标题中的问题,在使用现有方法时不必指定委托类型,这是不可能的。由于可能有许多不同的重载,所以方法名称被认为是一个方法组。您必须指定应使用哪个委托,以便编译器知道如何处理它。 –

+0

虽然Lambda表达式有任何方法吗? – goldengel

0

那么你可以使用MethodInvokerAction而不是创建自己的委托:)但是,我认为你真正要问的是当你打电话BeginInvoke时需要明确指定委托类型。

问题是Dispatcher.BeingInvoke需要任何委托,所以编译器将不知道要将AddressOf MyLoad转换为什么。

你可以添加你自己的扩展方法,虽然它有一个参数Action - 我相信这会让你调用它,而不必在调用代码中明确指定委托。

+0

谢谢乔恩。只是想知道如何看待Google搜索。你能在VB.Net中做一个例子吗?我刚刚发现:http://msdn.microsoft.com/en-us/library/ms591596%28v=vs.85%29.aspx – goldengel

+3

@goldengel:我现在没有时间去做。我建议你自己去,然后编辑你的问题,你有多远...... –

相关问题