2011-08-12 6 views
5

¿Cómo puedo mostrar varios trabajos secuenciales en una sola IU?Poner en cola trabajos de UI secuenciales y mostrarlos en la interfaz de usuario

Mi caso de uso es el siguiente:

  1. Acción del usuario
  2. Start primera Trabajo (longitud desconocida)
  3. Esperar el primer empleo para terminar y empezar segundo trabajo (longitud conocida)
  4. Espere a que el segundo trabajo finalice e inicie el tercer trabajo (longitud conocida)

Quiero mostrar esto al usuario de la siguiente manera:

  1. Tener un principal "Acción del usuario" diálogo sin barra de progreso mundial (por la primera tarea desconocida y muy variable de la longitud de las ejecuciones no puedo tener una longitud total exacto)
  2. En este diálogo tiene 3 sub partes uno para cada trabajo con una barra de progreso para cada uno de estos trabajos y fuera del curso con el estilo IProgressMonitor.UNKNOWN para el primer trabajo.
  3. En este cuadro de diálogo, las barras de progreso se actualizarán secuencialmente como trabajos subyacentes.

Esto permitirá al usuario final ver inmediatamente que su acción se divide en 3 subtareas (las subtareas son significativas para los usuarios finales) y cada vez que se inicia una nueva subtarea puede ver el duración de esta subtarea (desconocida por supuesto para la primera).

Después de muchas búsquedas, no fue capaz de poner en práctica eso, y hoy me estoy informando estos 3 sub-tareas como 3 diálogos sucesivos individuales con el inconveniente de que el usuario final puede inicialmente piensa que su acción se completará a finales de la primera subtarea desconocida.

Respuesta

2

¿No puede implementar sus propias reglas de programación para controlar el orden de ejecución de sus trabajos, y bloquear eficazmente el segundo trabajo mientras se está ejecutando el primero, y el tercero mientras se está ejecutando el segundo?

Mire http://www.eclipse.org/articles/Article-Concurrency/jobs-api.html para obtener detalles y fragmentos de código.

Desde el artículo anterior:

Cada vez que se adquiere una regla de planificación, la ejecución de ese hilo podría ser bloqueado hasta que se consiga la regla. En situaciones como estas, el usuario se beneficiaría al ver un diálogo que muestra el progreso de la tarea en ejecución y proporciona comentarios si la tarea está bloqueada por alguna otra tarea.

Si bien no lo he implementado yo mismo, lo he visto en Eclipse. Cuando el banco de trabajo está guardando su estado, mientras que un proyecto todavía se está construyendo, por ejemplo, Eclipse está informando sobre el progreso en la compilación, mientras bloquea el trabajo de persistencia del estado hasta que la compilación haya finalizado. Muestra los trabajos como entradas separadas dentro del mismo cuadro de diálogo y deja en claro que el segundo trabajo está bloqueado por el primero.

+0

Gracias por la respuesta. Intenté agregar reglas de programación entre trabajos de nmy, pero desafortunadamente no aparece en el mismo cuadro de diálogo. Si se llama a setuser (true) en todos los trabajos, tengo varios cuadros de diálogo y si solo se llama en el primer trabajo, tengo un cuadro de diálogo con todos mis trabajos, pero se cierra tan pronto como finaliza el primer trabajo –

+0

No se puede usar la vista de trabajos en lugar de los diálogos de progreso individuales? Incluso puede implementar su propio cuadro de diálogo para alojar la vista, si es necesario. Eche un vistazo a esto - http://www.richclient2.de/2006_09_28/using-the-eclipse-jobs-api/ para programar los trabajos, y esto - http://wiki.eclipse.org/FAQ_How_do_I_prevent_two_jobs_from_running_at_the_same_time%3F para las reglas de programación. –

+0

Esto también puede ser útil - http://wiki.eclipse.org/FAQ_How_do_I_switch_from_using_a_Progress_dialog_to_the_Progress_view%3F Lo sentimos, se olvidó de agregarlo a mi comentario anterior. –

0

¿Por qué no dividir una barra de proceso en tres partes? El primer tercio para el primer trabajo, luego el segundo y el tercero.

¡De todos modos es simple! :)

Cuestiones relacionadas