Compartir a través de


Diseñador de actividad ParallelForEach

La actividad ParallelForEach<T> enumera los elementos de una colección y ejecuta una instrucción incrustada para cada elemento de la colección en paralelo, la cual se presenta de forma asincrónica en el mismo subproceso. Utilice esta actividad de control de flujo en lugar de la actividad Sequence si se desea que las actividades secundarias de esta actividad pasen a estado inactivo.

La actividad ParallelForEach<T> tiene una propiedad CompletionCondition que contiene una expresión de Visual Basic especificada por el usuario. La actividad ParallelForEach<T> evalúa esta propiedad una vez se complete cada bifurcación. Si se evalúa como true, la actividad de ParallelForEach<T> se completa sin ejecutar las otras ramas. Si el CompletionCondition no se evalúa como verdadero, la actividad ParallelForEach<T> se completa cuando se hayan completado todas sus actividades secundarias.

Actividad parallelForEach<T>

ParallelForEach<T> enumera sus valores y programa la propiedad Body para cada valor que enumera. Solo programa la propiedad Body. La forma en que efectúe el cuerpo la ejecución depende de si Body pasa a estado inactivo.

Si la propiedad Body no pasa a estado inactivo, se ejecuta en orden inverso porque las actividades programadas se administran como una pila, la última actividad programada se ejecuta primero. Por ejemplo, si tiene una colección de {1,2,3,4}en ParallelForEach<T> y usa un WriteLine como cuerpo para escribir el valor. Tiene 4, 3, 2, 1 impreso en la consola. Esto se debe a que WriteLine no queda inactiva, por lo que después de que se programaran 4 actividades WriteLine, se ejecutaron utilizando un comportamiento de pila (la primera en entrar es la última en salir).

Pero si tiene actividades en la propiedad Body que pueden pasar a estado inactivo, como una actividad Receive o Delay, A continuación no hay necesidad de esperarlos para completarse. ParallelForEach<T> va a la siguiente actividad de cuerpo programada e intenta ejecutarla. Si esa actividad también pasa a estado inactivo, ParallelForEach<T> vuelve a desplazarse hasta la siguiente actividad del cuerpo.

Uso del diseñador de actividades ParallelForEach<T>

Acceda al diseñador de actividades ParallelForEach<T> de la categoría Flujo de control del Cuadro de herramientas.

El diseñador de actividades ParallelForEach<T> se puede arrastrar desde el Cuadro de herramientas y soltarse en la superficie del Diseñador de flujos de trabajo donde normalmente se colocan los diseñadores de actividades, por ejemplo, dentro de un diseñador de actividades Secuencia. Después de colocarlo en el Diseñador de flujos de trabajo, crea una actividad de ParallelForEach<T>, que de forma predeterminada contiene un DisplayName de ParallelForEach<Int32>.

Propiedades de ParallelForEach<T> en el Diseñador de flujos de trabajo

En la tabla siguiente se muestran las actividades ParallelForEach<T> más útiles y se describe cómo se utilizan en el diseñador.

Nombre de propiedad Obligatorio Uso
DisplayName False Especifica el nombre para mostrar descriptivo del diseñador de actividades en el encabezado. El valor predeterminado es ParallelForEach<Int32>. De forma opcional, el valor se puede editar en la cuadrícula Propiedades o directamente en el encabezado del diseñador de actividades.
Body False La actividad que se va a ejecutar para cada elemento en la colección. Para agregar la actividad Body, coloque una actividad desde el cuadro de herramientas en el cuadro Body del diseñador de actividades ParallelForEach<T> donde aparezca el texto con la sugerencia "Coloque la actividad aquí".
TypeArgument True El tipo de los elementos de la colección Values especificados por el parámetro genérico T. De forma predeterminada, TypeArgument se establece en Int32. Para cambiar el tipo T en el diseñador de actividades ParallelForEach<T>, cambie el valor del cuadro combinado TypeArgument en la cuadrícula de propiedades.
Values True La colección de elementos en la que se va a iterar. Para establecer el Values, escriba una expresión de Visual Basic en el cuadro Valores del diseñador de actividades ForEach<T> en el cuadro con el texto de sugerencia "Escriba una expresión VB" o en el cuadro Valores de la ventana Propiedades.
CompletionCondition Se evalúa cuando se completa cada iteración. Si se evalúa como true, se cancelan las operaciones programadas pendientes. Si no se establece esta propiedad, se ejecutan todas las instrucciones programadas hasta su compleción.

De forma predeterminada, el iterador del bucle se denomina elemento. Puede cambiar el nombre de la variable del iterador en la casilla ForEach del diseñador de actividades ParallelForEach<T>. El iterador del bucle se puede utilizar en expresiones en los elementos secundarios de la actividad ParallelForEach<T>.

Consulte también