Je recherche une méthode générique pour implémenter un écran d'attente lors d'opérations longues. J'ai utilisé le threading quelques fois auparavant, mais j'ai le sentiment que je l'ai implémenté soit très mal, soit avec beaucoup trop de tracas (et copier/coller - l'horreur!). Je veux garder cela aussi générique et simple que possible, donc je n'aurai pas à mettre en œuvre des charges de BackgroundWorker
s manipulant toutes sortes de merdes, ce qui rend les choses difficiles à maintenir.Ecran de chargement fileté (en attente)
Voici ce que je voudrais faire - s'il vous plaît noter que ce pourrait différer de ce qui est en fait possible/meilleures pratiques/whatever - en utilisant VB.NET, Framework 2.0 (donc pas de méthodes anonymes):
Private Sub HandleBtnClick(sender as Object, e as EventArgs) Handles Button.Click
LoadingScreen.Show()
'Do stuff here, this takes a while!'
Dim Result as Object = DoSomethingTakingALongTime(SomeControl.SelectedObject)
LoadingScreen.Hide()
ProcessResults(Result)
End Sub
L'application est maintenant complètement mono-thread, donc tout fonctionne sur le thread graphique. Je dois être en mesure d'accéder aux objets dans DoSomethingTakingALongTime()
sans avoir d'exceptions de thread-thread. Le thread graphique attend une méthode (qui prend beaucoup de temps) pour terminer, tandis que le formulaire LoadingScreen
doit rester réactif (il est animé/a une barre de progression/etc.).
Est-ce une approche réalisable/bonne ou est-ce que je vois cela de manière trop simpliste? Quelle est la meilleure pratique en la matière? Et le plus important: comment pourrais-je mettre en place un tel système? Comme je l'ai déjà mentionné, j'ai très peu d'expérience avec le filetage, alors soyez gentil s'il vous plaît :-)
Merci! Je vais regarder dans cela et revenir à vous :-) –
Très, très utile. Une bonne explication en anglais. Je vous remercie! –