次の方法で共有


例外のトラブルシューティング : System.InvalidOperationException

InvalidOperationException 例外は、メソッドの呼び出しに失敗し、その原因が無効な引数ではない場合にスローされます。 この例外は、基になる Win32 メソッドを呼び出すことができない場合に .NET Framework メソッドによってスローされます。

関連するヒント

  • Graphics オブジェクトを GetHdc メソッドの後に使用しているときは、ReleaseHdc メソッドを呼び出します。
    これにより、Graphics オブジェクトの GetHdc メソッドに対する以前の呼び出しで取得したコンテキスト ハンドルが解放されます。

  • TableAdapter が保存操作を正常に行うには、有効な UPDATE コマンド、INSERT コマンド、および DELETE コマンドが必要です。
    TableAdapter は、ウィザードに入力された元の SELECT ステートメントに基づいて、INSERT ステートメント、UPDATE ステートメント、および DELETE ステートメントを生成します。 状況によっては、保存操作の正常実行に要する INSERT コマンド、UPDATE コマンド、および DELETE コマンドの作成に必要なコマンドをアダプターが生成するための十分な情報を、SELECT ステートメントが提供しないことがあります。 これは、データベース テーブルが主キー列を持たない場合や、SELECT コマンドが JOINS を使用する場合にしばしば発生します。 詳細については、「方法 : TableAdapter を編集する」を参照してください。

  • 有効なエンドポイント名をサービス クライアント コンストラクターに渡します。
    Windows Communication Foundation (WCF) クライアントのエンドポイントが 1 つの場合、あいまいさはなく、エンドポイントを引数として指定する必要はありません。 ただし、同じコントラクト タイプに複数のエンドポイントが存在する場合、クライアントがどれを使用するかを指定する必要があります。 たとえば、クライアントを ServiceReference.ServiceSoapClient() のインスタンスとして引数なしで定義すると、この例外が発生します。 この問題は、特定のエンドポイントを指定することで解消できます。

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

    同様に、この例外は、見つからないエンドポイント名が指定されたときも発生します。 この場合は、有効なエンドポイント名を確認して指定する必要があります。

解説

Visual Studio デバッガーでコードを実行したとき、作成元のスレッド以外から UI 要素にアクセスすると InvalidOperationException がスローされます。 これは、危険性のあるプログラミング手法についてユーザーに警告するために行われます。 UI 要素はスレッド セーフでないため、作成元のスレッド上でのみアクセスされる必要があります。 詳細については、「スレッド処理 (C# および Visual Basic)」を参照してください。

メソッドの呼び出しが失敗した原因が無効な引数の場合は、代わりに ArgumentException をスローするか、その派生クラスである ArgumentNullException または ArgumentOutOfRangeException をスローする必要があります。

Visual Studio と SQL Server Compact 3.5 で 64 ビット開発を行う場合は、[コンパイラの詳細設定][ターゲット CPU] オプションを明示的に [x86] に設定する必要があります。 [ターゲット CPU] が既定値の [Any CPU] に設定されていると、"sqlceme35.dll を読み込めません" というメッセージが表示されることがあります。 [ターゲット CPU] オプションは、プロジェクト プロパティの [コンパイラの詳細設定] で設定します。

参照

処理手順

方法: 例外処理アシスタントを使用する

サービス参照のトラブルシューティング

参照

InvalidOperationException

GetHdc

ReleaseHdc