FIX: 您可以收到一条"System.OverFlowException"错误消息时从 Visual C#.net 程序或 Visual Basic.net 程序调用的方法的一个组件对象模型 (COM) DLL

文章翻译 文章翻译
文章编号: 329658 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

症状

您可能会收到以下错误消息:
client.exe 中发生未处理的异常的类型 System.OverflowException
其他信息: 溢出
当满足下列条件都为真时,可能会出现此问题:
  • 调用从 Microsoft Visual C#.net 程序或 Microsoft Visual Basic.net 程序定义中一个 Microsoft 组件对象模型 (COM) DLL 的方法。
  • 在应用程序的代码中,方法是位于后 System.Math.Asin 函数。System.Math.Asin 函数将返回 不是数字 (NaN)

原因

出现此问题的原因是新的公共语言运行库和 Microsoft Visual Basic 6.0 DLL 或 Microsoft Visual c + + DLL 句柄浮点下面的不一致现象: 点变量。

解决方案

若要解决此问题,获得 Microsoft 最新的服务包。NET Framework 1.0。要下载最新的 service pack,请访问下面的 Microsoft 开发人员网络 (MSDN) 的网站:
http://www.microsoft.com/downloads/details.aspx?familyid=6978D761-4A92-4106-A9BC-83E78D4ABC5B&displaylang=en

状态

Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。 此问题已被首先更正在 Microsoft.net Framework 1.0 Service Pack 3。

更多信息

重现行为的步骤

在 Visual Basic 6.0 中创建 COM 的 DLL

  1. 启动 Visual Basic 6.0。
  2. 新建项目 对话框的 新建 选项卡上单击 ActiveX DLL,然后单击 打开。默认状态下,将出现一个名为 Class1 的类模块文件。
  3. 将下面的代码添加到 Class1 的类模块文件:
    Option Explicit
    Public Function Avg() As Double
    Avg = 0/1
    End Function
  4. 文件 菜单上单击 生成 Project1.dll。在 生成项目 对话框出现。
  5. 找到一个文件夹保存 Project1.dll 文件,然后单击 确定 以保存该文件。

创建客户端应用程序

  1. 启动 Visual Studio.net。
  2. 文件 菜单上指向 新建,然后单击 项目。在 新建项目 对话框。
  3. 项目类型 框中,单击 Visual C# 项目,然后单击 模板 下的 控制台应用程序
  4. 名称 框中键入 客户端,然后单击 确定。默认状态下,创建名为 Class1.cs 文件。
  5. 将现有代码替换下面的代码:
    using System;
    using Project1;
    using System.Diagnostics;
    
    namespace Client
    {	
    	class Class1
    	{		
    		[STAThread]
    		static void Main(string[] args)
    		{
    			
    			Class1Class T = new Class1Class();
    			Console.WriteLine(T.Avg()) ;
    
    			double D = Math.Asin(2); 
    			Console.WriteLine(T.Avg());    			
    		}		
    	}
    }
  6. 项目 菜单上单击 添加引用。在 添加引用 对话框。
  7. 单击 浏览。在 选择组件 对话框。
  8. 定位到您在"创建 COM DLL"节中创建的 Project1.dll 文件并单击 Project1.dll,然后单击 打开
  9. 添加引用 对话框中单击 确定 以将该 DLL 添加到您的客户端项目。

生成并运行该项目

  1. 生成 菜单上单击 生成解决方案
  2. 按 CTRL + F5 运行该应用程序不在调试器的情况下。 显示 实时调试 对话框。
  3. 单击 。显示 附加到进程 对话框。
  4. 单击 确定

    您可能会注意到在"症状"一节中提到的行为。
有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684用于描述 Microsoft 软件更新的标准术语的说明

参考

有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
817248如何从 Visual Basic 6.0 中调用 Visual Basic.net 程序集以及如何从 Visual Basic.net 调用 Visual Basic COM 组件
315847如何使用 Visual Basic.net 的 Visual Studio.net 中使用 ActiveX 组件

属性

文章编号: 329658 - 最后修改: 2006年12月30日 - 修订: 1.3
这篇文章中的信息适用于:
  • Microsoft .NET Framework 1.0 Service Pack 2
  • Microsoft .NET Framework 1.0 Service Pack 1
  • Microsoft .NET Framework 1.0
关键字:?
kbmt kbcominterop kbclient kbfunctions kbconsole kbbug kbfix kbqfe kbnetframe100presp3fix kbprb KB329658 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 329658
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
不再更新的 KB 内容免责声明
本文介绍那些 Microsoft 不再提供支持的产品。因此本文按“原样”提供,并且不再更新。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com