Поделиться через


Разрешение вопросов, связанных с исключениями: System.InvalidOperationException

Обновлен: Ноябрь 2007

Исключения InvalidOperationException генерируются при сбоях вызова метода, вызванных причиной, отличной от передачи недопустимого аргумента. Это исключение может создаваться методами .NET Framework в случае невозможности вызова базового метода Win32.

Полезные советы

  • При использовании объекта Graphics после метода GetHdc вызовите метод ReleaseHdc.
    При этом освободится дескриптор контекста, полученный в результате предыдущего вызова метода GetHdc объекта Graphics.

  • Чтобы операция сохранения была выполнена успешно, для классов TableAdapter требуется использование допустимых команд UPDATE, INSERT и DELETE.
    Классы TableAdapter генерируют инструкции INSERT, UPDATE и DELETE исходя из исходной инструкции SELECT, введенной в мастере. В некоторых ситуациях SELECT не предоставляет адаптеру достаточный объем сведений для генерации команд, которые нужны для создания команд INSERT, UPDATE и DELETE, необходимых для успешного сохранения. Это часто происходит, когда в таблице базы данных отсутствует столбец первичного ключа, или если команда SELECT использует соединения. Дополнительные сведения см. в разделе Практическое руководство. Изменение объектов TableAdapter.

  • Передайте конструктору клиента службы допустимое имя конечной точки.
    Если клиент Windows Communication Foundation (WCF) имеет только одну конечную точку, неоднозначность отсутствует, и передавать конечную точку в качестве аргумента нет необходимости. Однако если для одного типа контракта существует несколько конечных точек, необходимо указать, какая из них используется клиентом. Например, при определении клиента в качестве экземпляра ServiceReference.ServiceSoapClient() без передачи аргумента возникнет исключение. Проблему можно решить путем указания конкретной конечной точки:

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

    Аналогично, это исключение возникнет при передаче имени конечной точки, которая не может быть найдена. В таком случае необходимо выяснить и передать допустимое имя конечной точки.

    Дополнительные сведения о конечных точках см. в разделе Конечные точки Windows Communication Foundation.

Замечания

При выполнении кода в отладчике Visual Studio при попытке обращения к элементу пользовательского интерфейса из любого потока, отличного от того, в котором он был создан, генерируется исключение InvalidOperationException. Отладчик делает это, чтобы предупредить об опасном стиле программирования. Элементы пользовательского интерфейса не являются потокобезопасными, и доступ к ним должен осуществляться только из потока, в котором они созданы. Дополнительные сведения см. в разделе Многопотоковость в Visual Basic.

В случае сбоя вызова метода вследствие недопустимого аргумента или аргументов генерируется исключение ArgumentException или исключение одного из его производных классов — ArgumentNullException или ArgumentOutOfRangeException.

Если Visual Studio и SQL Server Compact 3.5 используются для разработки 64-разрядных приложений, то в качестве значения параметра Конечный ЦП в разделе Дополнительные параметры компилятора должно быть выбрано значение x86. Если присвоить параметру Конечный ЦП значение по умолчанию (Любой ЦП), может возникнуть следующее сообщение об ошибке: "Не удалось загрузить sqlceme35.dll". Задайте параметр Конечный ЦП в разделе Дополнительные параметры компилятора свойств проекта.

См. также

Задачи

Практическое руководство. Поиск дополнительных сведений об исключении с помощью помощника по исключениям

Диагностика ссылок на службы

Ссылки

InvalidOperationException

GetHdc

ReleaseHdc