Pregunta

Al comienzo de una sección de código C # que podría tardar varios segundos en completarse, me gustaría mostrar un formulario no modal con una etiqueta que simplemente dice: "Por favor, espere ..."

WaitForm myWaitForm = null;

try
{
  // if conditions suggest process will take awhile
  myWaitForm = new WaitForm();
  myWaitForm.Show();

  // do stuff
}
finally
{
  if (myWaitForm != null)
  {
    myWaitForm.Hide();
    myWaitForm.Dispose();
    myWaitForm = null;
  }
}

El problema: la WaitForm no aparece por completo antes de que el resto de los lazos de código hasta el hilo. Por lo que sólo ve el marco de la forma. En Delphi (mi vieja tierra pisando) Me gustaría llamar Application.ProcessMessages después del show () ¿Hay un equivalente en C #? ¿Hay una forma enlatada "status" que puedo usar en situaciones como esta? ¿Hay una mejor manera de abordar esto?

Gracias de antemano. David Jennings

¿Fue útil?

Solución

Estoy de acuerdo con la sugerencia de "otro hilo", pero para propósitos simple y Application.DoEvents cortos () va a hacer.

Otros consejos

Yo necesidad de ejecutar la parte de cosas hacer en un hilo diferente.
y entonces todo myWaitForm.Show()
Echar un vistazo a la clase BackgroundWorker aquí

Se podría moverse mejor su código de "hacer cosas" a otro hilo. y utilizar Application.DoEvents () para proces los mensajes de forma

El término que está buscando es "pantalla de bienvenida".

Aquí hay algunos comentarios relacionados. https://stackoverflow.com/search?q=splash+screen+c%23

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top