Parámetros en array de objetos con método invoke

Hola, soy nuevo en este site, es la primera pregunta que realizo, espero dejarme entender y desde ya muchas gracias por la ayuda que puedas brindarme.
El problema que tengo es el siguiente. Te lo expicare con código, creo que es más entendible
Public Class clsPrueba
    Public Delegate Sub SubDelegado(ByVal Args() As Object)
    Public _objeto As ISynchronizeInvoke
    Public _delegado As SubDelegado
    Public Sub Datos(ByVal Objeto As ISynchronizeInvoke, ByVal delegado As SubDelegado)
        _objeto = Objeto
        _delegado = delegado
    End Sub
    Public Sub Iniciar()
        'Procesos
        Dim lista As New Generic.List(Of dto.Documento)
        lista = LlenarDocumentos()
        Dim Args() As Object = New Object() {lista}
        Objeto.Invoke(delegado, Args)
    End Sub
End Class
En el Formulario
Public Sub Prueba()
        Dim oclsPrueba As clsPruba
        Dim t As New Threading.Thread(AddressOf oclsPrueba.Iniciar)
        oclsPrueba.datos(form1, AddressOf elSubDelegado)
        t.Start()
 End Sub
 Public Sub elSubDelegado(ByVal Args() As Object)
        Dim Lista As Generic.List(Of dto.Documento) = DirectCast(Args(0), Generic.List(Of dto.Documento))
 End Sub
Entonces, yo llabo al Sub Prueba, todo el proceso se realiza correctamente, lo que esté en el otro hilo también. El problema aparece cuando el procedimiento "Iniciar", llega a la linea "Objeto.Invoke(delegado, Args)"... El mensaje del error devuelto por visual dice:
System.ArgumentException was unhandled
  Message="Object of type 'System.Collections.Generic.List`1[ds.dto.Documento]' cannot be converted to type 'System.Object[]'."
Si pruebo pasando cualquier otro tipo de objeto no hay problema, si especifico como uno de los parámetros del delegado la lista genérica y la meto al array de objetos tampoco me da problemas, pero no quiero hacer esto porque mi intención es hacer un proceso muy genérico que pueda devolver cualquier lista de objetos u otro tipo de objetos, creí que como todos los objetos derivan de la clase Object no debería tener problemas.
Bueno, Espero puedas ayudarme con mi problema. Gracias.

1 Respuesta

Respuesta
1
Si estas trabajando con framework 2.0 o 3.5 esto no es posible, porque las listas genéricas no le puedes hacer ese tipo de conversiones.
El problema ya eta resuelto con el fremwork 4.0 de .NET.
Toca que pases como objeto no una lista genérica sino otro objeto, intenta con un arraylist.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas