none
Affichage d'un message RRS feed

  • Question

  • Bonjour tout le monde,

    Il a été question il y a quelque temps d'une émulation du gestionnaire de tâches, que j'ai écrite pour pouvoir y choisir la police de caractères (c'est mieux quand j'arrive à lire ce que ça dit).

    Il a été noté que le langage C# n'était pas le plus adapté pour cela, en raison du temps que met le programme à parcourir les processus.

    Pour finir, il s'est avéré que le plus gênant est le temps mis par les tâches de débogage confiées à Visual Studio. Si je lance le programme directement sans débogage, la liste met cinq secondes à se charger. J'imagine donc que je devrais charger Visual Studio avec droits administrateur, puisque c'est sans élévation de droits que le chargement est interminable.

    Alors voilà maintenant ce qui m'amène. Quelques-uns des processus déclenchent des erreurs (depuis peu de temps d'ailleurs), et je voudrais les afficher à l'écran pour pouvoir aviser à leur sujet. Par MessageBox.Show(), OK ça s'affiche. Ça peut certes en faire une avalanche en peu de temps, mais pour les besoins du débogage je peux mettre une temporisation pour avoir le temps de réagir.

    Ce qui m'ennuie surtout c'est la longueur de certains de ces messages, trop importante pour qu'un MessageBox puisse les afficher à l'écran, la partie intéressante déborde. J'ai donc créé un formulaire de message.

    Mais voilà, si le formulaire apparaît à l'écran, il semble qu'il n'ait pas le temps d'afficher ses composants. J'ai les bords des contrôles, mais pas leur contenu.

    Dans le formulaire d'affichage, plutôt que mettre le TextBox public, j'ai tenté en créant une propriété :

            public string Message 
            { 
                get
                {
                    return textBox1.Text;
                    // mais j'aurais pu laisser vide
                }
                set
                { 
                    textBox1.Text = value;
                    this.Show();
                }
            }

    Hélas, ça donne le même résultat.

    Hum, on dirait que je vais devoir introduire un autre élément, que je n'ai pas encore bien identifié ?

    Ou alors ... ouvrir le formulaire de message à l'avance, et le rendre visible une fois qu'il a un contenu ?



    • Modifié Gloops vendredi 28 janvier 2022 19:20
    vendredi 28 janvier 2022 19:15

Réponses

  • Ah, ça marche mieux avec this.ShowDialog() que this.Show().

    Je vais peut-être laisser la question quelques heures quand même, quelque chose me dit que quelqu'un aura un conseil judicieux.

    D'ailleurs, une fois que j'ai pu lire les messages d'erreurs et introduire en conséquence les temporisations qu'il faut, il semble qu'il n'y ait plus d'erreur.

    Ça a "cacophoné" pendant une semaine ou deux, et ça fonctionne de nouveau.

    ***

    Je suis en train de chercher un fil pour y apporter un complément de réponse, et je retrouve ceci.

    On peut dire que les quelques heures sont écoulées.

    Sur une machine avec 32 Go de mémoire, le gestionnaire de tâches personnalisé fonctionne dans un temps acceptable, c'est si je le lance depuis Visual Studio que c'est long, les tâches de débogage prennent donc du temps.

    Tant que je n'ai pas besoin de modifier le programme, j'ai de quoi afficher les tâches de façon lisible pour mes petits yeux.

    • Modifié Gloops samedi 25 juin 2022 22:31
    • Marqué comme réponse Gloops samedi 25 juin 2022 22:31
    vendredi 28 janvier 2022 19:28