Estoy tratando de aprender algunos principios de WCF siguiendo un ejemplo de una aplicación WCF (de Sacha Barber).GetInvocationList de un evento en VB.NET
Ahora me gustaría convertir la función siguiente en VB.NET
private void BroadcastMessage(ChatEventArgs e)
{
ChatEventHandler temp = ChatEvent;
if (temp != null)
{
foreach (ChatEventHandler handler in temp.GetInvocationList())
{
handler.BeginInvoke(this, e, new AsyncCallback(EndAsync), null);
}
}
}
pero tengo algunos problemas, debido a que el siguiente código no es aceptado por el compilador
Private Sub BroadcastMessage(ByVal e As ChatEventArgs)
Dim handlers As EventHandler(Of ChatEventArgs) = ChatEvent
If handlers IsNot Nothing Then
For Each handler As EventHandler(Of ChatEventArgs) In handlers.GetInvocationList()
handler.BeginInvoke(Me, e, New AsyncCallback(AddressOf EndAsync), Nothing)
Next
End If
End Sub
Dice
Public Shared Event ChatEvent (remitente As Object, e As ChatEventArgs) 'es un caso, y no puede ser llamado directamente
llegando al punto, es posible entonces en VB.NET obtener los controladores vinculados a un determinado evento de alguna otra manera?
Solo tenga en cuenta que está utilizando un miembro no documentado en su clase, y (a menos que esté equivocado) esta política de nombres no se garantiza que permanezca igual en futuras versiones del compilador. –
@Adam - Sí, definitivamente no documentado, por lo que he visto, pero no puedo ver que lo cambien a menos que tengan alguna razón para, o al menos brinden una alternativa. En cualquier caso, es la única forma en que puede hacerlo actualmente, sin manejar todas las cosas del evento por su cuenta, como en su ejemplo. Las suyas seguirán funcionando si lo cambian, pero preferiría guardar ese trabajo dada la probabilidad de que cambie. –