À quel quota fait-on référence dans ce message d'exception: Il n'y a pas assez de quota disponible pour traiter cette commande
J'ai un .NET application qui lève l'exception suivante:
System.ComponentModel.Win32Exception : Not enough quota is available to process this command
at MS.Win32.UnsafeNativeMethods.PostMessage(HandleRef hwnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at MS.Win32.ManagedWndProcTracker.HookUpDefWindowProc(IntPtr hwnd)
at MS.Win32.ManagedWndProcTracker.OnAppDomainProcessExit()
at MS.Win32.ManagedWndProcTracker.ManagedWndProcTrackerShutDownListener.OnShutDown(Object target)
at MS.Internal.ShutDownListener.HandleShutDown(Object sender, EventArgs e)
Je ne peux pas reproduire cette exception personnellement, mais je reçois beaucoup de rapports d'exception pour les utilisateurs.
Qu'est-ce que le "quota" d'être visés? La trace de la pile qui m'amène à croire qu'il pourrait y avoir un problème avec les Fenêtres de message de la file d'attente.
Des idées sur ce qui peut provoquer cette erreur, ou comment le résoudre, il serait grandement apprécié.
EDITION, plus d'info: C'est sur 32 bits de Windows XP sur toutes les machines, et que l'exception n'est pas dans mon code en tant que tel, mais un .NET Framework gestionnaire d'événement de la sorte. L'application elle-même ne fait aucune PostMessage appels.
source d'informationauteur sackoverflow
Vous devez vous connecter pour publier un commentaire.
La quantité de ressources de Windows d'un type spécifique que d'un processus pourrait allouer est techniquement limitée uniquement par la quantité de mémoire virtuelle disponible pour un processus. Ce qui peut être un assez grand nombre, en particulier sur la version 64 bits de Windows. Certaines de ces ressources sont retirés d'un interne de segment de mémoire à partir de laquelle tous les autres processus se retirer aussi bien. Encore un très grand nombre si Windows ne laissez un processus en consommer toute l'.
Qui bien sûr n'a pas de sens, un processus qui ne devrait jamais être autorisé à engloutir toutes les ressources disponibles. Qui est ce que le quota n', il définit une limite supérieure à l'compté le nombre de ressources d'un certain type. Des exemples courants sont 10 000 de windows, de 10 000 objets GDI, de 10 000 poignées. Pas tous d'entre eux sont des nombres entiers comme ce btw.
Il faudrait en savoir plus sur ce que votre PostMessage() l'appel n', mais raisonnable suppose que c'est en poussant le message taille de file d'attente passé le quota. Encore une fois, une ressource qui est techniquement limitée uniquement par la taille de la mémoire virtuelle disponible. Mais pratiquement, devrait rester bien au sud. Si précis, que vous envoyez des messages plus vite que ce qu'ils peuvent être consommés, la limitation est nécessaire. Que cela se passe à la exacte fois que votre programme est appelé à disparaître suggère une autre explication pourrait être nécessaire. Un arrêt thread problème de commande, peut-être.
Windows 2000/XP: Il y a une limite de 10.000 messages postés par message
la file d'attente. Cette limite doit être suffisamment grande. Si votre demande dépasse
à la limite, il devrait être revue pour éviter de consommer de manière beaucoup du système
les ressources. Pour ajuster cette limite, de modifier la clé de registre suivante.
Le minimum acceptable est de 4000.
Il pourrait être NTFS Quotas. Pour plus d'informations, voir http://technet.microsoft.com/en-us/library/cc786220(WS.10).aspx
La solution ici est: