Es más fácil de manejar deshabilitar ciertos controles colocándolos dentro de un panel y desactivación de ese panel en lugar de deshabilitar controles individuales:
controlPanel.Enabled = false;
Una forma común para bloquear otras tareas, que pueden satisfacer sus necesidades, es mostrando una forma superior con una barra de progreso. Lo he implementado en el pasado con éxito. Otros programas hacen lo mismo.Por ejemplo, en WinRAR, cuando la aplicación está ocupada extrayendo o comprimiendo archivos, la aplicación muestra una forma superior. Parece una forma "modal", pero de hecho, puede hacer clic en las otras funciones, a lo que WinRAR pregunta: "¿Desea abortar la operación actual?"
Desactivar la aplicación completa a menudo no es necesario y puede no ser intuitivo. Por lo tanto, pregúntese si realmente necesita bloquear la interacción con el formulario. Por ejemplo, tengo una aplicación que toma cierto tiempo para completar ciertas tareas. Proporciono un indicador de barra de progreso para ese trabajo en particular, pero aún puede interactuar con la aplicación para iniciar tareas adicionales que se ejecutan simultáneamente. Incluso si solo le permitiera realizar una única tarea a la vez, igual puede querer ver el archivo de ayuda o establecer las preferencias de la aplicación mientras se ejecuta la tarea. Además, le doy al usuario un botón que le permite detener la tarea. Deshabilitar el formulario evitaría este tipo de interacción.
Si vas a deshabilitar el formulario al mover el código al fondo, ¿qué sentido tiene moverlo al fondo? – JaredPar
Porque sin un backgroundworker Windows dirá que la aplicación es "No responde" si el usuario intenta interactuar con ella. – Chris