Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este tema es aplicable a Windows Workflow Foundation 4.
En este ejemplo se muestra cómo interrumpir el mecanismo de bucle de las siguientes actividades: DoWhile, ForEach, Whiley ParallelForEach.
Esto resulta útil porque Windows Workflow Foundation (WF) no incluye ninguna actividad para interrumpir la ejecución de estos bucles.
Situación
En el ejemplo se encuentra el primer proveedor de confianza en una lista de proveedores (instancias de la clase Vendor
). Cada proveedor tiene un ID
, un Name
y un valor de confiabilidad numérico que determina la fiabilidad del proveedor. En el ejemplo se crea una actividad personalizada llamada FindReliableVendor
que recibe dos parámetros de entrada (una lista de proveedores y un valor de confiabilidad mínimo) y devuelve el primer proveedor de la lista que coincide con los criterios proporcionados.
Interrumpir un bucle
Windows Workflow Foundation (WF) no incluye ninguna actividad para interrumpir un bucle. El ejemplo de código logra interrumpir un bucle utilizando una actividad If y diferentes variables. En el ejemplo, la actividad While se interrumpe cuando se asigna a la variable reliableVendor
un valor distinto de null.
El siguiente ejemplo de código muestra cómo el ejemplo interrumpe un bucle while.
// Iterates while the “i” variable is lower than the size of the list
// and any reliable Vendor is found.
new While(env => i.Get(env) < this.Vendors.Get(env).Count && reliableVendor.Get(env) == null)
{
DisplayName = "Main loop. Breaks when a reliable vendor is found",
Body = new Sequence
{
Activities =
{
// This is the if used for setting the value of the break value…
new If
{
DisplayName = "Check for a reliable vendor",
// If a vendor satisfies the reliability level…
Condition = new InArgument<bool>(env =>
this.Vendors.Get(env)[i.Get(env)].Reliability >
this.MinimumReliability.Get(env)),
// then assign that vendor to the reliable vendor variable and
// the while condition becomes false (exit the loop).
Then = new Assign<Vendor>
{
To = reliableVendor,
Value = new InArgument<Vendor>(env =>
this.Vendors.Get(env)[i.Get(env)])
}
},
// Increment the iteration variable.
new Assign<int>
{
DisplayName = "Increment iteration variable",
To = i,
Value = new InArgument<int>(env => i.Get(env) + 1)
}
}
}
}
Para utilizar este ejemplo
Abra el archivo de solución EmulatingBreakInWhile.sln con Visual Studio 2010.
Presione F6 para compilar la solución.
Presione CTRL+F5 para ejecutar la solución.
![]() |
---|
Puede que los ejemplos ya estén instalados en su equipo. Compruebe el siguiente directorio (valor predeterminado) antes de continuar.
<InstallDrive>: \WF_WCF_Samples
Si no existe este directorio, vaya a la página de ejemplos de Windows Communication Foundation (WCF) y Windows Workflow Foundation (WF) Samples para .NET Framework 4 para descargar todos los ejemplos de Windows Communication Foundation (WCF) y WF. Este ejemplo se encuentra en el siguiente directorio.
<InstallDrive>:\WF_WCF_Samples\WF\Basic\Built-InActivities\EmulatingBreakInWhile
|