关于异常的疑难解答:System.InvalidOperationException

更新:2007 年 11 月

当调用方法失败不是由无效参数所引起时,会引发 InvalidOperationException 异常。当无法调用基础 Win32 方法时 .NET Framework 方法可能会引发此异常。

相关提示

  • 如果在使用 GetHdc 方法后使用 Graphics 对象,请调用 ReleaseHdc 方法。
    这将释放上一次调用 Graphics 对象的 GetHdc 方法时所获得的上下文句柄。

  • TableAdapters 需要有效的 UPDATE、INSERT 和 DELETE 命令以执行成功的保存操作。
    TableAdapters 根据输入向导的原始 SELECT 语句生成 INSERT、UPDATE 和 DELETE 语句。在某些情况下,对于成功保存所需要的 INSERT、UPDATE 和 DELETE 命令,SELECT 语句不会为适配器提供足够的信息以生成创建这些命令所必需的命令。这通常发生在数据库表没有主键列时,或 SELECT 命令使用 JOINS 时。有关更多信息,请参见 如何:编辑 TableAdapter

  • 将有效的终结点名称传递到服务客户端构造函数。
    当 Windows Communication Foundation (WCF) 客户端仅有一个终结点时,则不会出现含糊不清并且您不必将该终结点作为参数列出。不过,当同一协定类型存在两个或更多个终结点时,则必须指定客户端使用哪个终结点。例如,不使用参数将客户端定义为 ServiceReference.ServiceSoapClient() 的实例会引发此异常。可以通过指定以下特定终结点来解决该问题:

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

    同样,如果提供的终结点名称无法找到,也会引发此异常。在这种情况下,必须标识并提供有效的终结点名称。

    有关终结点的更多信息,请参见 Windows Communication Foundation 终结点

备注

当您在 Visual Studio 调试器中运行代码时,如果从一个线程访问某个 UI 元素,而该线程不是创建该 UI 元素时所在的线程,则会引发 InvalidOperationException。调试器引发此异常以警告您存在危险的编程做法。UI 元素不是线程安全的,所以只应在创建它们的线程上进行访问。有关更多信息,请参见多线程处理 (Visual Basic)

如果由于一个或多个无效参数造成方法调用失败,则应该转为引发 ArgumentException 或其派生类(ArgumentNullExceptionArgumentOutOfRangeException 异常)之一。

在使用 Visual Studio 和 SQL Server Compact 3.5 进行 64 位开发时,必须将“高级编译器设置”中的“目标 CPU”选项显式设置为“x86”。在将“目标 CPU”设置为默认值“Any CPU”时,可能会收到消息“无法加载 sqlceme35.dll”。请在项目属性的“高级编译器设置”中设置“目标 CPU”选项。

请参见

任务

如何:使用异常助手查找有关异常的更多信息

服务引用疑难解答

参考

InvalidOperationException

GetHdc

ReleaseHdc