Comment voulez-vous obtenir le cours Actuel de la Fenêtre de Gérer le nombre et la Poignée de la Fenêtre Limite .NET?
Je veux obtenir le nombre de poignées de fenêtre et le système à l'échelle de la poignée de la fenêtre de limite dans C#. Comment puis-je aller à ce sujet?
OriginalL'auteur | 2008-09-27
Vous devez vous connecter pour publier un commentaire.
Si vous lisez Raymond Chen post, vous trouverez probablement aussi ennuyeux que j'ai fait. Vous êtes seulement "probablement fait quelque chose de mal" parce que vous êtes en train de faire quelque chose de Windows n'est pas capable de faire.
Dans mon application, la première fois qu'un utilisateur visite une page de l'onglet, j'ai créer et mettre en page tous les contrôles de la page. Cela prend beaucoup de temps - il peut facilement être de 50 contrôles sur une page. Donc, je ne jetez pas les contrôles sur un onglet de page après le remplissage, si c'est possible, et de laisser la fermeture des ensembles de pages d'onglet jusqu'à l'utilisateur.
Comme il arrive, certains utilisateurs ne veulent fermer tout ensembles de pages à onglet. Pourquoi devrais-je me forcer à l'? Avec mon INTERFACE utilisateur, ils peuvent naviguer très rapidement à tout l'un des plus de 300 ensembles de transactions qu'ils sont responsables de la gestion. Leurs machines sont assez rapide, et assez de mémoire, pour rendre tout cela très à l'écoute. Le seul problème est que Windows ne peut pas la soutenir.
Pourquoi suis-je à l'aide de contrôles, et non pas une autre technologie d'INTERFACE utilisateur? Parce qu'ils travail. J'ai besoin de soutien événements de focus, de l'ordre des tabulations, des événements de validation, mise en page dynamique, et la liaison de données - les utilisateurs sont réellement gérer les milliers de dossiers, dans des dizaines de tables, dans un DataSet en mémoire. Le montant du développement, j'aurais du faire - dire - mettre en place quelque chose à l'aide de contrôles sans fenêtre est astronomique.
Je suis le seul à "faire le mal" parce que Windows a une dure limite sur le nombre de poignées de fenêtre qu'il peut soutenir. Cette limite est basée sur un tas de vieux de dix ans des hypothèses sur le fonctionnement d'un ordinateur, l'INTERFACE utilisateur peut être construit. Ce n'est pas moi qui "fait quelque chose de mal."
En tout cas, ma solution à ce est en deux parties.
Tout d'abord, une classe qui peuvent vous dire comment beaucoup de poignées de fenêtre de votre processus à l'aide de:
Deuxième, j'en ai toujours un moins récemment utilisés cache de ma page de l'onglet objets. L' .NET framework n'est pas un générique LRU classe de cache, j'ai donc construit une, que vous pouvez obtenir ici si vous en avez besoin. Chaque fois que l'utilisateur visite une page d'onglet, je l'ajouter à la LRU Cache. Puis-je vérifier pour voir si je suis en cours d'exécution faible sur les poignées de fenêtre. Si je le suis, j'ai jeter le contrôle sur le moins récemment utilisé la page de l'onglet, et de continuer à le faire jusqu'à ce que j'ai assez de fenêtre poignées de nouveau.
OriginalL'auteur Robert Rossney
Comme Raymond Chen mis il y a quelque temps, si vous êtes à la réflexion sur la poignée de la fenêtre de limites, vous êtes probablement fait quelque chose de mal 🙂
De toute façon, je parie qu'il n'y a rien de spécial à C# moyen de le faire, parce que c'est très spécifique au système. Vous pouvez utiliser les mêmes fonctions que vous pouvez utiliser dans une application C++. Appeler les fonctions à l'aide de P/Invoke. Apprendre à écrire les importations, allez à la pinvoke.net.
Edit: Comme je comprends votre question, je suppose que vous savez déjà comment le faire dans une application Win32.
OriginalL'auteur OregonGhost
La citation entière OregonGhost se réfère est
C'est à partir de Pourquoi est la limite de poignées de fenêtre par un processus de 10 000? Vous devriez lire ceci.
OriginalL'auteur Hugh Allen