Bonjour,
Jusqu'à présent, j'ai implémenté la logique métier de l'outil que je développe (en C# / .NET 3.5). Les objets génèrent des évènements (Started, ActivityChanged, Completed, etc) tout au long de leurs exécutions.
J'ai ensuite codé une application console pour tester l'exécution des objets. Là tout est en dur, c'est à dire que les chemins des fichiers quand j'en ai besoin sont fixés dans le code source ou bien les valeurs des propriétés des objets sont également fixées en dur. J'ai réussi à gérer les évènements déclenchés par mes objets donc je vois bien le déroulement de l'application.
Maintenant, j'aimerai mettre en place une IHM de configuration de l'outil par le biais d'une interface web. J'aimerai faire cela en ASP.NET. Dans ma tête, je pensais pouvoir y arriver très facilement :
- une page aspx contenant un UpdatePanel dans laquelle j'ai un ou deux label pour afficher des infos, une listbox pour avoir une sorte de sortie "log" de certains évènements et un bouton pour démarrer le traitement.
- une page aspx.cs contenant mon code-behind dans laquelle je reproduis plus ou moins le code que j'ai fait dans l'application console de test précédente et où je traite les évènements déclenchés par mes objets.
Au final, j'ai testé ça et le résultat n'est pas celui que j'attends. Lors du clic sur le bouton, la tâche démarre, le traitement est effectué, les évènements sont déclenchés. Dans ces gestionnaires d'évènements, je met le code de mise à jour de l'interface, genre :
Mais le panel ne se met pas à jour au fil de l'exécution mais uniquement lorsque la tâche est terminée. Mon panel se rafraîchit d'un coup et je vois qu'il contient bien toutes les notifications reçues pendant l'exécution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 lblInfo.Text = e.Message; UP1.Update();
Donc les infos sont bien envoyées au panel mais il y a un truc qui fait que ce n'est pas tout à faire asynchrone quelque part. La documentation que j'ai lu m'a fait faire quelques manipulations :
- UpdatePanel.UpdateMode = Conditional;
- Vérifier les runat="server"
- Dans web.config, modifier le paramètre "xhtmlConformance" à "Transitional"
Mais je n'ai pas de résultat positif
Alors du coup je me pose des questions :
- Est-ce que dans un premier temps, la manière dont j'ai procédé est bonne ? (c'est à dire, faire une assembly avec la moulinette dans un premier, puis coder une IHM qui va instancier les objets de la moulinette et afficher des infos à l'écran pour l'utilisateur)
- Est-ce que c'est faisable en ASP.NET ?
- Est-ce que je dois utiliser autre chose que UpdatePanel pour faire ce que je veux faire ?
Je ne sais plus trop quoi chercher en fait là
(J'espère que c'est pas trop fouillis comme explication ^^)
Partager