none
ayuda al ejecutar varias acciones en orden RRS feed

  • Pregunta

  • buenas, necesito ayuda a la hora de ejecutar varias acciones en ordedn una despues de otra

    a lo q me refiero es q digamos

    Void DoActions()
    {
      if (chk1.IsChecked)
        {action 1}
    
      if (chk2.IsChecked)
        {action 2}
    
      if (chk3.IsChecked)
        {action 3}
    
      if (chk3.IsChecked)
        {action 3}
    }
    

    entonces es que a la hora de ejecutar DoActions() se ejecute action1, luego la 2 y asi sucesivamente....a esto agregandole que alguna se puede omitir si por ejemplo chk2.Checked = false algo asi

    un ultimo ejemplo a ver si me explico mejor....lo que hace un instalador q necesita descargar los archivos....primero se selecciona lo q quiere instalar, despues los descarga y al final los instala...enves de q uno los escoje...y los empieza a descagar mientras los intenta instalar de una vez...masomenos algo asi, q haya un orden

     

    Gracias espero haberme explicado bien

    miércoles, 2 de marzo de 2011 1:06

Todas las respuestas

  • Hola Luis.

    Bueno, esto se puede hacer de infinidad de formas, yo te dejo una bastante sencilla que es la base de tu idea, lo que quieres es ir creando un vector de acciones para luego recorrerlo y ejecutarlas una a una, a esto se denomina comunmente pila FIFO o LIFO, en este caso te pongo el ejemplo con FIFO (primero en entrar primero en salir).

    haciendo uso de los objetos del framework seria algo asi:

     

    // encolar las acciones
    queue.Enqueue(new Action(accion1));
    queue.Enqueue(new Action(accion1));
    queue.Enqueue(new Action(accion1));
    queue.Enqueue(new Action(accion1));
    queue.Enqueue(new Action(accion1));
    
    // comenzar la ejecucion de las accioens
    Action action;
    while ((action = (Action)queue.Dequeue()) != null)
    {
     action.Invoke();
    }
    
    
    
      // funciones para ejecutar
      public void accion1() { /*... cuerpo de funcion */ }
      public void accion2() { /*... cuerpo de funcion */ }
      public void accion3() { /*... cuerpo de funcion */ }
      public void accion4() { /*... cuerpo de funcion */ }
    

     

    El codigo lo he puesto todo junto para que te hagas una idea y lo despliegues como bien te venga, la idea es ir encolando SOLO las acciones que se vayan a ejecutar (dependiendo del check u otro mecanismo), luego solo tienes que recorrer el objeto e ir desencolando acciones para ejecutarlas.

    NOTA: el objeto Action es del framework y es un objeto para encapsular un metodo con parametros pero sin valor de retorno (lo que viene a ser un procedimiento en los paradigmas), si quieres valores de retorno puedes hacer uso de 'Func'.

    En fin, tienes muchos mecanismos, si necesitas ayuda mas concreta comentalo.

    PD.- se me olvido ponerte la declaracion de queue:

          // crear cola para añadir las acciones
          System.Collections.Queue queue = new System.Collections.Queue();

     


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    miércoles, 2 de marzo de 2011 8:41
  • gracias david por su respuesta, perdoname la ignorancia es q di yo no soy muy avanzado en esto, entonces la verdad no se como se usa

    otra cosa yo el ejemplop lo habia puesto en c# entonces ud me respondio en c#...pero no me lo puede poner en VB talvez se me haga mas facil

     

    gracias de antemano

    sábado, 5 de marzo de 2011 3:33
  • Hola Luis.

    lo siento, pero hace mucho tiempo que no programo en VB, pero la mayoria del codigo son objetos y funciones que se tratan de la misma forma.

    te dejo una pagina con un traductor, existen otras, pero es la primera que he encontrado, si vas a programar en VB, mejor que vayas intentando traducirte el codigo por que hay mucho mas en c# que VB.

    http://authors.aspalliance.com/aldotnet/examples/translate.aspx

    de todas formas si tienes problema con la traduccion postealo en el foro que seguro que hay gente que te puede ayudar.


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    domingo, 6 de marzo de 2011 9:44
  • gracias, no tranquilo yo lo que uso es c# no VB....el problema es que el programa que estoy haciendo lo empece hace como 2 años en VB cuando solo ese sabia...y ahora lo llevo muy adelntado y con mucho codigo como para ponerme a traducirlo.....gracias de todos modos...el codigo que me pusiste ahi atras si me sirvio, lo traduje y arregle muchas gracias
    lunes, 7 de marzo de 2011 3:05