Tengo una aplicación .NET que desencadena la siguiente excepción:'cuota' se hace referencia en este mensaje de excepción: No hay suficiente cuota está disponible para procesar este comando
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)
No puedo reproducir este excepción personalmente, pero recibo muchos informes de excepción de los usuarios.
¿A qué se refiere la 'cuota'? El seguimiento de la pila me lleva a pensar que podría ser un problema con la cola de mensajes de Windows.
Cualquier idea sobre qué podría causar este error, o cómo solucionarlo sería muy apreciada.
EDITAR, más información: Se trata de 32 bits de Windows XP en todas las máquinas, y la excepción no está en mi código como tal, sino un controlador de eventos de .NET Framework de algún tipo. La aplicación en sí misma no realiza ninguna llamada de PostMessage.
Por lo tanto, la cuota es un límite por proceso en (presumiblemente) el tamaño de la cola de mensajes. Supongo que mi siguiente pregunta es ¿cómo puedo descubrir por qué la cola se está haciendo tan grande, una para otra publicación, supongo? – sackoverflow
Creo que mi respuesta es más precisa, Hans sugiere que este es un mensaje ** cola **, pero creo que es un límite de 10,000 mensajes enviados. Por lo tanto, para eludir esto, envíe mucho menos mensajes, aumente el valor de registro para este límite o reinicie su cola de mensajes en caso de excepción. Consulte http://msdn.microsoft.com/en-us/library/ms644944(VS.85).aspx para obtener más información. – servermanfail
@servermafail, gracias por la ayuda. Para aclarar: mi código no envía ningún mensaje, si observa el seguimiento de la pila, puede ver que se trata de un código de .NET Framework que hace que la llamada PostMessage se cierre (appdomain?). La aplicación no llama explícitamente a PostMessage ni a HandleShutdown. La aplicación se ejecuta en cientos de máquinas, alterar la configuración del registro no es realmente una opción en ninguna de ellas. – sackoverflow