Comment puis-je garder un gif animé en cours d'exécution tandis que mon application est en cours d'exécution d'un sous.
L'ensemble de l'INTERFACE utilisateur est bloqué donc j'ai essayé de l'afficher dans une autre forme, mais j'obtiens le même résultat.
Plutôt l'utilisation d'une barre de progression indéterminée si vous le pouvez, mais cela dépend de la technologie utilisée.
Exemple sur BG Travailleur:
Private wrkDeploy AsNew BackgroundWorker()PrivateSub wndMain_Loaded(ByVal sender AsObject,ByVal e As RoutedEventArgs)AddHandler wrkDeploy.DoWork,AddressOf wrk_DoWork
AddHandler wrkDeploy.RunWorkerCompleted,AddressOf wrk_RunWorkerCompleted
EndSubPrivateSub wrk_RunWorkerCompleted(ByVal sender AsObject,ByVal e As RunWorkerCompletedEventArgs)' Hide Gif and start normal UI process againEndSubPrivateSub wrk_DoWork(ByVal sender AsObject,ByVal e As DoWorkEventArgs)' Do all heavy work hereEndSubPrivateSub btnFilter_Click(ByVal sender AsObject,ByVal e As RoutedEventArgs)' Show GIF and disable whatever you need to
wrkDeploy.RunWorkerAsync()EndSub
merci pour la chouette la mise à jour en vb.net 🙂 Que faire si le gros du travail est fait par l'instanciation de classes, et ensuite, à partir de threads pour les méthodes à l'intérieur de ces classes? Il est impossible d'instancier des classes et le début de méthodes dans les classes que les discussions au sein du DoWork sous-routine(?)
La classe BackgroundWorker vous permet
pour exécuter une opération sur une autre,
thread dédié. De temps
les opérations de téléchargements et de la base de données
les transactions peuvent causer votre utilisateur
interface (INTERFACE utilisateur) pour être comme si il
a cessé de répondre alors qu'ils sont
en cours d'exécution. Lorsque vous voulez un réactif de l'INTERFACE utilisateur
et vous êtes confrontés à d'importants retards
associés à de telles opérations, l'
Classe BackgroundWorker fournit un
solution pratique.
donc je suppose que je devrais faire de la sous exécuter dans un thread différent, plutôt que de le gif animé. ça va prendre un certain ré-écriture de mon application. Tout ce qui est fait dans le doWork d'un arrière-plan travailleur exécute sur un thread de travail et laisse le thread d'INTERFACE utilisateur seul. Vous pouvez utiliser RunCompleted à déterminer lorsque le processus est terminé, ou ReportProgress cours. Son tout à fait la pratique de classe.
Deux choses:
BackgroundWorker
(exemple ci-dessous)Exemple sur BG Travailleur:
Que faire si le gros du travail est fait par l'instanciation de classes, et ensuite, à partir de threads pour les méthodes à l'intérieur de ces classes? Il est impossible d'instancier des classes et le début de méthodes dans les classes que les discussions au sein du DoWork sous-routine(?)
OriginalL'auteur Kyle Rozendo
Vous devriez jeter un oeil à
travailleur
BackgroundWorker dans VB.NET
Tout ce qui est fait dans le doWork d'un arrière-plan travailleur exécute sur un thread de travail et laisse le thread d'INTERFACE utilisateur seul. Vous pouvez utiliser RunCompleted à déterminer lorsque le processus est terminé, ou ReportProgress cours. Son tout à fait la pratique de classe.
OriginalL'auteur Adriaan Stander