Share via


예외 문제 해결: System.InvalidOperationException

InvalidOperationException 예외는 잘못된 인수 이외의 다른 이유로 인해 메서드 호출에 실패한 경우에 throw됩니다. 이 오류는 기본 Win32 메서드를 호출할 수 없는 경우 .NET Framework 메서드에서 throw될 수 있습니다.

관련 팁

  • GetHdc 메서드 다음에 Graphics 개체를 사용하는 경우에는 ReleaseHdc 메서드를 호출하십시오.
    이렇게 하면 Graphics 개체의 GetHdc 메서드에 대한 이전 호출에 사용된 컨텍스트 핸들이 해제됩니다.

  • 저장 작업을 수행하려면 TableAdapter에 올바른 UPDATE, INSERT 및 DELETE 명령이 필요합니다.
    TableAdapter는 마법사에 입력한 원래 SELECT 문을 기반으로 INSERT, UPDATE 및 DELETE 문을 생성합니다. 상황에 따라서는 저장 작업을 수행하기 위해 필요한 INSERT, UPDATE 및 DELETE 명령을 만들기 위한 명령을 어댑터에서 생성하기에 충분한 정보를 SELECT 문이 제공하지 않을 수 있습니다. 일반적으로 데이터베이스 테이블에 기본 키 열이 없거나 SELECT 명령에 JOINS가 사용되는 경우에 이러한 상황이 발생합니다. 자세한 내용은 방법: TableAdapter 편집을 참조하십시오.

  • 올바른 중단점 이름을 서비스 클라이언트 생성자에 전달합니다.
    WCF(Windows Communication Foundation) 클라이언트에 중단점이 하나만 있는 경우에는 모호성이 없으므로 중단점을 인수로 나열할 필요가 없습니다. 그러나 동일한 계약 형식에 대해 둘 이상의 중단점이 있으면 클라이언트가 사용하는 중단점을 지정해야 합니다. 예를 들어 인수가 없는 ServiceReference.ServiceSoapClient()의 인스턴스로 클라이언트를 지정하면 이 예외가 발생합니다. 이러한 문제는 다음과 같이 특정한 중단점을 지정하여 해결할 수 있습니다.

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

    마찬가지로 이 예외는 찾을 수 없는 중단점 이름을 제공한 경우에도 발생합니다. 이 경우 올바른 중단점 이름인지 확인하고 제공해야 합니다.

설명

Visual Studio 디버거에서 코드를 실행할 때 해당 코드가 작성된 스레드 이외의 다른 스레드에서 UI 요소에 액세스하면 InvalidOperationException이 throw됩니다. 디버거는 프로그래밍 방식에 문제가 있다는 경고 메시지를 표시합니다. UI 요소는 스레드로부터 안전하게 보호되지 않으므로 이를 만든 스레드에서만 액세스해야 합니다. 자세한 내용은 스레딩(C# 및 Visual Basic)을 참조하십시오.

잘못된 인수로 인해 메서드를 호출할 수 없는 경우 ArgumentException이 throw되거나 해당 파생 클래스인 ArgumentNullException 또는 ArgumentOutOfRangeException 중 하나가 대신 throw됩니다.

Visual Studio 및 SQL Server Compact 3.5에서 64비트 개발 작업을 수행하려면 고급 컴파일러 설정대상 CPU 옵션을 명시적으로 x86으로 설정해야 합니다. 대상 CPU를 기본값인 모든 CPU로 설정하면 "sqlceme35.dll을(를) 로드할 수 없습니다." 메시지가 나타날 수 있습니다. 프로젝트 속성의 고급 컴파일러 설정에서 대상 CPU 옵션을 설정하십시오.

참고 항목

작업

방법: 예외 도우미 사용

서비스 참조 문제 해결

참조

InvalidOperationException

GetHdc

ReleaseHdc