2010-09-29 9 views
0

Supposons que vous ajoutez une fonctionnalité à une application de formulaire Windows ancienne et en cours d'exécution maintenant l'application entière s'exécute dans un thread et l'application est vraiment grande et a de nombreuses formes que vous ne pouvez pas réfracter en multithreads , maintenant l'application gui geler chaque fois que vous faites un processus, est-il possible d'avoir un indicateur que son chargement ou en cours pendant son gel? sans changer toute la conception du logiciel pour supporter les threads etc? Par la façon dont je ne veux pas qu'il arrête de geler son ok pour geler je veux juste qu'il indique que son fait quelque chose!Windows Forms GUI Stuck

toute idée serait appréciée, merci ...

+0

Vous rejetez toutes les réponses raisonnables. Cela vous oblige à vous retrousser les manches et à vous rendre au travail. –

+0

ne pas rejeter les réponses Hans, quand j'ai posté cette question je me demandais s'il y a un moyen de le faire à côté de ces moyens, c'est pourquoi je l'ai fait savoir que je ne veux pas réécrire l'application, chargement "n'est pas urgent donc si c'est pas applicable c'est ok avec moi. merci de toute façon – Stacker

Répondre

1

Voir BackgroundWorker componet si l'application est écrite en utilisant .NET 2.0 ou version supérieure.

+0

mais en utilisant l'arrière-plan travailleur va me forcer à changer l'application entière en ajoutant tout le processus qui gèle le gui à l'arrière-plan, puis en ajoutant une barre de progression ou quelque chose qui ne s'applique pas, je ne veux pas arrête de geler! Je veux juste afficher quelque chose en disant attendre ou de chargement sans changer l'application entière – Stacker

1

Vous pouvez définir la propriété Cursor du formulaire sur Cursors.WaitCursor lors du démarrage de l'action longue durée et la réinitialiser à Cursors.Default à la fin. Pendant que votre action s'exécute, vous pouvez appeler Application.DoEvents() mais cela peut provoquer des effets secondaires si d'autres événements se déclenchent entre temps.

+0

alors je vais devoir passer par l'ensemble de l'application et écrire ce code avant toutes ces tonnes de méthodes et le changer après toutes ces tonnes de méthodes, je suppose que mon question n'est pas applicable alors – Stacker

+0

@Stacker - ce que je vous ai donné est une solution rapide et très sale pour résoudre votre problème. la solution proposée par @saurabh est plus élégante et moins sujet aux erreurs. même si cela implique des réécritures, c'est un petit prix à payer pour une application plus réactive. – devnull