.Net中使用com组件后发生System.ArithmeticException异常的解决办法
2005-03-18 15:46
696 查看
最近在开发一个.Net程序,其中涉及到对com组件的调用,在调用完以后如果使用一些小的测试程序继续运行,一切正常,但是在使用带有GUI的form程序继续执行时,总是出现以下异常
Exception: System.ArithmeticException
Message: 算术运算中发生溢出或下溢。
Source: System.Drawing
at System.Drawing.Font.Initialize(FontFamily family, Single emSize, FontStyle style, GraphicsUnit unit, Byte gdiCharSet, Boolean gdiVerticalFont)
at System.Drawing.Font..ctor(String familyName, Single emSize, FontStyle style, GraphicsUnit unit, Byte gdiCharSet)
at Payment.Phone.ErrorForm.InitializeComponent() in E:/cvsroot/develope/payment/Phone/ErrorForm.cs:line 108
at Payment.Phone.ErrorForm..ctor(Util util, String msg) in E:/cvsroot/develope/payment/Phone/ErrorForm.cs:line 139
at Payment.Phone.ConfirmForm.lblNext_Click(Object sender, EventArgs e) in E:/cvsroot/develope/payment/Phone/ConfirmForm.cs:line 212
后来到处找资料,花了我一天的时间才给解决,以下是我的解决办法:
1.声明一个DLL掉用
[DllImport("msvcr70.dll", CallingConvention = CallingConvention.Cdecl)]
unsafe public static extern int _controlfp(int n, int mask);
2.在代码中添加以下代码方法
internal void ResetFPCR()
{
const int _EM_OVERFLOW = 0x0009001F;
const int _MCW_EM = 0x000FFFFF;
_controlfp(_EM_OVERFLOW, _MCW_EM);
}
3.在调用完com组件后,调用以上方法,如:
//这里调用com组件
//然后执行Reset方法
ResetFPCR();
注:具体详细请看http://support.microsoft.com/default.aspx?scid=KB;EN-US;q326219&
Exception: System.ArithmeticException
Message: 算术运算中发生溢出或下溢。
Source: System.Drawing
at System.Drawing.Font.Initialize(FontFamily family, Single emSize, FontStyle style, GraphicsUnit unit, Byte gdiCharSet, Boolean gdiVerticalFont)
at System.Drawing.Font..ctor(String familyName, Single emSize, FontStyle style, GraphicsUnit unit, Byte gdiCharSet)
at Payment.Phone.ErrorForm.InitializeComponent() in E:/cvsroot/develope/payment/Phone/ErrorForm.cs:line 108
at Payment.Phone.ErrorForm..ctor(Util util, String msg) in E:/cvsroot/develope/payment/Phone/ErrorForm.cs:line 139
at Payment.Phone.ConfirmForm.lblNext_Click(Object sender, EventArgs e) in E:/cvsroot/develope/payment/Phone/ConfirmForm.cs:line 212
后来到处找资料,花了我一天的时间才给解决,以下是我的解决办法:
1.声明一个DLL掉用
[DllImport("msvcr70.dll", CallingConvention = CallingConvention.Cdecl)]
unsafe public static extern int _controlfp(int n, int mask);
2.在代码中添加以下代码方法
internal void ResetFPCR()
{
const int _EM_OVERFLOW = 0x0009001F;
const int _MCW_EM = 0x000FFFFF;
_controlfp(_EM_OVERFLOW, _MCW_EM);
}
3.在调用完com组件后,调用以上方法,如:
//这里调用com组件
//然后执行Reset方法
ResetFPCR();
注:具体详细请看http://support.microsoft.com/default.aspx?scid=KB;EN-US;q326219&
相关文章推荐
- .Net中使用com组件后发生System.ArithmeticException异常的解决办法
- [导入].Net中使用com组件后发生System.ArithmeticException异常的解决办法
- .Net中使用com组件后发生System.ArithmeticException异常的解决办法(Message=算术运算中发生溢出或下溢。)
- .Net中使用组件后发生System.ArithmeticException异常的解决办法
- .net应用程序安装部署时异常 Error 1001. 在初始化安装时发生异常 System.BadImageFormatException:未能加载文件或程序集 的解决办法【成功解决】
- .net发生类型为 System.OutOfMemoryException 的异常解决办法
- .NET 使用 ODP.NET 组件访问Oracle提示 外部组件发生异常 错误的解决办法
- 使用json发生java.lang.NoClassDefFoundError: net/sf/json/JSONObject异常的解决办法
- Myeclipes 使用json发生java.lang.NoClassDefFoundError: net/sf/json/JSONObject异常的解决办法
- 使用json发生java.lang.NoClassDefFoundError: net/sf/json/JSONObject异常的解决办法
- 在使用EF时调用DBFUNCTION扩展方法时,发生ENTITYCOMMANDEXECUTIONEXCEPTION 异常的解决办法
- 使用json发生java.lang.NoClassDefFoundError: net/sf/json/JSONObject异常的解决办法
- 使用json发生java.lang.NoClassDefFoundError: net/sf/json/JSONObject异常的解决办法
- EF(Entity Framework)发生错误”正在创建模型,此时不可使用上下文“的解决办法。 正在创建模型,此时不可使用上下文。如果在 OnModelCreating 方法内使用上下文或如果多个线程同时访问同一上下文实例,可能引发此异常。请注意不保证 DbContext 的实例成员和相关类是线程安全的。 临时解决了这个问题,在Context的构造函数中,禁用了自动初始化:
- asp.net上传文件使用fileupload控件,判断文件类型和大小,取得文件路径时报错【System.IO.FileNotFoundException:未能找到文件】的解决办法
- HttpWebRequest使用注意(发生阻塞的解决办法)
- 引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常 解决办法
- WEB站点使用企业库安全性异常解决办法
- win7安装oracle 10g时发生“程序异常终止。发生内部错误”的提示 解决办法
- [C#]用HttpWebRequest加载证书建立SSL通道时发生异常的解决办法