es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

vb.net – llama al método RunWorkerAsync de un BackgroundWorker utilizando el nombre de bw como una variable

Tengo una aplicación que realiza muchas comprobaciones de tiempo y bucles a través de tablas de datos, comprobando ciertos valores en ciertos momentos, etc.

El resultado final es que tengo una lista (de cadenas) que contiene los nombres de los “calendarios” que deben ejecutarse en un momento determinado. Esos nombres corresponden a los nombres de un conjunto de trabajadores en segundo plano.

Me pregunto si hay alguna manera de recorrer esa lista y, utilizando el nombre del trabajador en segundo plano que es una variable de cadena, llamar al método RunWorkerAsync del trabajador en segundo plano correspondiente.

Los trabajadores en segundo plano ya están declarados antes de tiempo de ejecución y sus nombres son estáticos, coincidiendo con los nombres de la lista.

He estado mirando la función CallByName, pero no encuentro ningún ejemplo de uso de la documentación que la muestre utilizada de esta manera, así que no estoy seguro si estoy yendo por un camino sin salida allí.

Cualquier ayuda se aprecia de antemano.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes usar la función CallByName para llamar al método RunWorkerAsync del correspondiente trabajador en segundo plano.

    La sintaxis para usar CallByName es:

    CallByName(Object As Object, ProcName As String, CallType As Microsoft.VisualBasic.CallType, Args() As Object) As Object
    

    En tu caso, lo harías de la siguiente manera:

    For Each schedule In run_these_schedules
        CallByName(backgroundWorkerDictionary(schedule), "RunWorkerAsync", CallType.Method)
    Next
    

    Aquí, backgroundWorkerDictionary es un diccionario que asigna los nombres de los trabajadores en segundo plano (que son las claves en el diccionario) a los correspondientes objetos de trabajador en segundo plano.

    El parámetro CallType se establece en Method, ya que estás llamando a un método en el objeto de trabajador en segundo plano.

    Esta solución asume que los objetos de trabajador en segundo plano ya han sido instanciados y añadidos al diccionario antes de tiempo de ejecución, y que los nombres de los trabajadores en la lista coinciden con las claves en el diccionario.

    ¡Espero que esto ayude!

Comments are closed.