Solución de problemas de excepciones: System.InvalidOperationException

Actualización: noviembre 2007

Cuando se invoca un método y se genera un error que no se debe a un argumento no válido, se produce una excepción InvalidOperationException. Los métodos de .NET Framework podrían producir esta excepción cuando no se puede llamar al método de Win32 subyacente.

Sugerencias asociadas

  • Si está utilizando el objeto Graphics después del método GetHdc, llame al método ReleaseHdc.
    Esto liberará al identificador del contexto obtenido a través de una llamada anterior al método GetHdc del objeto Graphics.

  • TableAdapters requiere comandos UPDATE, INSERT y DELETE válidos para realizar una operación de guardado correcta.
    TableAdapters genera instrucciones INSERT, UPDATE y DELETE basadas en la instrucción SELECT original escrita en el asistente. En algunas situaciones, la instrucción SELECT no proporciona información suficiente para que el adaptador genere los comandos necesarios para crear los comandos INSERT, UPDATE y DELETE requeridos para una operación de guardar correcta. Esto sucede cuando la tabla de base de datos no tiene una columna de clave principal o el comando SELECT utiliza JOINS. Para obtener más información, vea Cómo: Editar TableAdapters.

  • Pasar un nombre de punto final válido al constructor de cliente de servicio.
    Cuando un cliente de Windows Communication Foundation (WCF) tiene sólo un punto final, no hay ninguna ambigüedad y no es necesario hacer una lista de puntos finales como argumento. Sin embargo, si existen dos o más puntos finales para el mismo tipo de contrato, se debe especificar cuál es el que utiliza el cliente. Por ejemplo, si se define un cliente como una instancia de ServiceReference.ServiceSoapClient() sin un argumento, se produce esta excepción. Puede resolver el problema especificando un punto final determinado:

    Dim client As New ServiceReference.ServiceSoapClient("ServiceSoap")

    De igual forma, esta excepción se produce si proporciona un nombre de punto final que no se puede encontrar. En este caso, se debe identificar y proporcionar un nombre de punto final válido.

    Para obtener más información sobre puntos finales, vea Windows Communication Foundation Endpoints.

Comentarios

Cuando ejecuta el código en el depurador de Visual Studio, se produce una excepción InvalidOperationException si tiene acceso al elemento de interfaz de usuario desde cualquier subproceso distinto del subproceso en el que se creó. El depurador hace esto para advertir de una práctica de programación peligrosa. Los elementos de interfaz de usuario no son seguros para subprocesos y sólo debería obtenerse acceso a ellos en el subproceso que los creó. Para obtener más información, vea Subprocesamiento múltiple en Visual Basic.

Si la invocación del método no se produce correctamente debido a que un argumento o unos argumentos no son válidos, se produce ArgumentException o una de sus clases derivadas, ArgumentNullException o ArgumentOutOfRangeException.

Para hacer desarrollo de 64 bits con Visual Studio y SQL Server Compact 3.5, la opción CPU de destino en Configuración de compilador avanzada se debe establecer explícitamente en x86. Cuando la CPU de destino está establecida en el valor predeterminado Cualquier CPU, podría aparecer el mensaje "No se puede cargar sqlceme35.dll". Establezca la opción CPU de destino en Configuración de compilador avanzada en las propiedades de proyecto.

Vea también

Tareas

Cómo: Averiguar más sobre una excepción con el Ayudante de excepciones

Solucionar problemas de referencias de servicio

Referencia

InvalidOperationException

GetHdc

ReleaseHdc